仅更新非空行

时间:2017-08-28 05:43:40

标签: python sql python-2.7 sqlite sql-update

我对SQL很陌生,我想知道是否可以使用条件更新列。

我有两列,只有第一个(A)中有东西时才想更新第二个(B):

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

如何避免将更新应用于列A为空的行?

1 个答案:

答案 0 :(得分: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;