我正在尝试根据where子句中的3个不同条件更新表中的3个不同列。 (我在不同的表中有更新的数据,所以我在主键上加入它们)
例如,如果我之前在field1中没有为客户提供值,但现在我这样做了, 我应该能够更新列'field1'。同样,我想更新列field2和field3。
我可以在一个Update语句中完成此操作。
要更新一列,您可以编写如下内容:
Update tblCustomer
SET tblCustomer.Order_Date = tblCustomerInfo.Order_Date
FROM tblCustomer
LEFT JOIN tblCustomerInfo ON (tblCustomer.CustomerID = tblCustomerInfo.CustomerID)
WHERE tblCustomer.Order_Date <> tblCustomerInfo.Order_Date
AND tblCustomer.Order_Date is NULL;
如何根据不同的条件更新3个不同的列 (如果之前缺少该列缺失的数据,现在可用)
答案 0 :(得分:16)
UPDATE categories
SET display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END,
title = CASE id
WHEN 1 THEN 'New Title 1'
WHEN 2 THEN 'New Title 2'
WHEN 3 THEN 'New Title 3'
END
WHERE id IN (1,2,3)
答案 1 :(得分:2)
您可以更新多个列
UPDATE [t1]
SET field1 = t2.field1,
field2 = CASE WHEN <field 2 changed> THEN t2.field2 ELSE t1.field2 END,
field3 = CASE WHEN t1.field3 <> t2.field3 THEN t2.field3 else t1.field3 END
FROM <table1> as t1
LEFT JOIN <table2> as t2 on t1.key1 = t2.key1