2017-08-28 44 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;