我有一个包含两个DATETIME列的表。
其中一个永远不会为NULL,但其中一个有时是NULL。
我需要编写一个查询,将列B的所有NULL行设置为等于A列中的值。
我已经尝试了this example但是所选答案中的SQL没有执行,因为MySQL Workbench似乎不喜欢UPDATE中的FROM。
答案 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;