2017-08-28 97 views
0

我很新的SQL,我想知道如果我可以使用條件更新列。只更新非空行

我有兩列,我要更新第二個(B)僅如果在第一個東西(A):

'UPDATE Table1 SET ColumnB = (SELECT BG FROM Table2 WHERE Table1.ColumnC = BG.ColumnZ)' 

我怎樣才能避免更新應用到列A爲空的行?

回答

2

一種方法是使用EXISTS,如果只想更新,其中有一個匹配:

UPDATE Table1 
    SET ColumnB = (SELECT BG FROM Table2 t2 WHERE table1.ColumnC = t2.ColumnZ) 
    WHERE EXISTS (SELECT BG FROM Table2 t2 WHERE table1.ColumnC = t2.ColumnZ); 

如果您想更新只在第一臺具有非NULL值,然後在使用WHERE外部查詢:

UPDATE Table1 
    SET ColumnB = (SELECT BG FROM Table2 t2 WHERE table1.ColumnC = t2.ColumnZ) 
    WHERE ColumnB IS NOT NULL;