2014-05-07 32 views
0

我想写一个sql语句来更新另一个表列的表中的一列。但我只想更新列,如果它是空的。更新查询select语句只更新如果该字段为空

例如:

UPDATE 
    Table 
SET 
    Table.col1 = other_table.col1, 
FROM 
    Table 
INNER JOIN 
    other_table 
ON 
    Table.id = other_table.id 

,但我想设置只有当该值是空的Table.col1值。什么是最好的方法来做到这一点?

+0

',其中Table.col1是null'?取决于你的意思是空的... –

回答

3

定义为空?

但实际上你需要的是一个在那里同样

UPDATE Table 
    SET Table.col1 = other_table.col1, 
    FROM Table 
     INNER JOIN 
     other_table ON Table.id = other_table.id 
WHERE Table.col IS NULL --or whatever your empty condition is 

子句中Postgre你可能需要一个不同的语法(How to do an update + join in PostgreSQL?):

UPDATE Table 
    SET Table.col1 = other_table.col1, 
    FROM Table 
     ,other_table 
WHERE Table.id = other_table.id 
    AND Table.col IS NULL --or whatever your empty condition is 
+0

要利用@KarlKieninger的声明,无效条目和空条目(即'')之间存在主要区别。 –

+0

为什么它会抛出“table name Table spcecified不止一次的错误 - >这里表是我的表名 –

+1

@ Null-Hypothesis,因为你在更新语句中创建了一个连接,这可以解决(但通常dbms之间不同)。所以你的dbms是什么? –