如何在同一列中将多行的值更新为不同的指定值?

时间:2014-05-29 20:35:11

标签: sql

假设我有一张表,其中有产品ID,产品说明和每个desc的语言。我想这样,如果有一个美国英语的NULL值的描述,它将更新为该产品的描述的英国 - 英语版本。有没有办法在SQL中使用update命令执行此操作?

3 个答案:

答案 0 :(得分:1)

我通常更喜欢这种语法来更新一个表中的值,而不是另一个表(或者在这种情况下是相同的)表中的值,b / c很容易将UPDATE...SET更改为SELECT测试并快速查看将更新的值。

UPDATE p_US
SET p_US.product_desc = p_GB.product_desc
FROM dbo.product p_US 
    INNER JOIN dbo.product p_GB ON p_US.productID = p_GB.productID
WHERE p_US.language_code = 'US'
    AND p_GB.language_code = 'GB'
    AND p_US.product_desc IS NULL
;

然后您可以将上面的前两行替换为快速测试以查看将要更新的内容:

SELECT p_US.productID, p_US.product, 
        oldDesc = p_US.product_desc, newDesc = p_GB.product_desc 

答案 1 :(得分:0)

更新[table]设置[列] =案例[更改因素]当'1'然后'X'否则'Y'结束于[where子句]

答案 2 :(得分:0)

也许:

UPDATE my_table SET desc=(SELECT desc from my_table WHERE my_table.id=id AND my_table.lang='british') WHERE lang='american' and desc is NULL;