一列的SQL集值等于同一表中另一列的值

时间:2011-10-19 05:41:37

标签: mysql sql

我有一个包含两个DATETIME列的表。

其中一个永远不会为NULL,但其中一个有时是NULL。

我需要编写一个查询,将列B的所有NULL行设置为等于A列中的值。

我已经尝试了this example但是所选答案中的SQL没有执行,因为MySQL Workbench似乎不喜欢UPDATE中的FROM。

5 个答案:

答案 0 :(得分:121)

听起来你只在一张桌子上工作,所以像这样:

update your_table
set B = A
where B is null

答案 1 :(得分:16)

UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL

答案 2 :(得分:13)

我会这样做:

UPDATE YourTable SET B = COALESCE(B, A);

COALESCE是一个返回其第一个非null参数的函数。

在此示例中,如果给定行上的B不为null,则更新为无操作。

如果B为空,则COALESCE会跳过它并使用A代替。

答案 3 :(得分:4)

我认为其他例子不是你想要的。如果您只是从同一个表中的另一列更新一列,那么您应该可以使用类似的内容。

update some_table set null_column = not_null_column where null_column is null

答案 4 :(得分:0)

更新 YourTable
 SET ColumnB = ColumnA
 WHERE
  ColumnB IS NULL
 AND ColumnA IS NOT NULL;