2012-09-10 94 views
4

我試圖根據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個不同的欄目去根據不同的地方條件 (如果數據丟失該列以前失蹤, ,現在可)

回答

12
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

您可以更新多列

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