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