日期:2014-05-17  浏览次数:20480 次

批量新增问题
批量增加或修改的问题,搞得我不会写程序了。

商品表:Product: Id,Name
商品属性表:ProductSpec: SpecId,ProductId,Value,Price

比如:有一个商品有6种规格,售价不同:

商品名称:发卡
商品规格:
红色,15.00
蓝宝石色,15.50
绿宝石色,15.50
粉色,15.00
黄色,15.20
黑色,14.50

还有些商品规格有20多个,如果一条条SQL语言写,不要不断写数据库20多次啊。
想请问大家如何写?
------最佳解决方案--------------------
 insert into ProductSpec(ProductId,Value,Price) 
 select id,'红色',15.00
 union all
 select id,'蓝宝石色',15.50
 union all ...

------其他解决方案--------------------
union all起来,批量写入.
------其他解决方案--------------------
规格是自己定,你不一个一个写进去,数据库能自己生出来不成。
------其他解决方案--------------------
是这个意思么?
--把发卡的价格都涨1元
update ProductSpec a set a.price=(case a.商品规格 when '红色' then '16.00' when '宝蓝' then '16.00' when '绿宝' then '16.50' when '粉色' then '16.00' end ) from  Product b
where a.ProductId=b.id and b.name='发卡'

------其他解决方案--------------------
是想批量新增。
我现在是这样的写法
1. insert into Product(name) values('发卡')
返回id=@@IDENTITY
2.然后再一句句向表中写
insert into ProductSpec(ProductId,Value,Price) Values(id,'红色',15.00)
insert into ProductSpec(ProductId,Value,Price) Values(id,'蓝宝石色',15.50)
insert into ProductSpec(ProductId,Value,Price) Values(id,'绿宝石色',15.50)
insert into ProductSpec(ProductId,Value,Price) Values(id,'粉色',15.00)
insert into ProductSpec(ProductId,Value,Price) Values(id,'黄色',15.20)
insert into ProductSpec(ProductId,Value,Price) Values(id,'黑色',14.50)
------其他解决方案--------------------
总觉得这种写法,麻烦并且效率有点低。有没有更好的写法?
------其他解决方案--------------------
引用:
SQL code12345 insert into ProductSpec(ProductId,Value,Price)  select id,'红色',15.00 union all select id,'蓝宝石色',15.50 union all ...
+1