SQL设置一列的值等于同一表中另一列的值
我有一个有两个DATETIME列的表。
其中一个从不是NULL,但其中一个有时是NULL。
我需要写一个查询将设置列B的所有NULL行等于列A中的值
我试过这个例子,但是所选答案中的SQL没有执行,因为MySQL Workbench似乎不喜欢UPDATE中的FROM。
听起来就像你在一张桌子上工作,所以这样的事情:
update your_table set B = A where B is null
UPDATE YourTable SET ColumnB=ColumnA WHERE ColumnB IS NULL AND ColumnA IS NOT NULL
我会这样做:
UPDATE YourTable SET B = COALESCE(B, A);
COALESCE是一个返回它的第一个非空参数的函数。
在这个例子中,如果给定行上的B不为空,则更新是无操作。
如果B为空,则COALESCE跳过它并使用A代替。
我不认为其他的例子是你正在寻找的。 如果你只是从同一个表中的另一列更新一列,你应该能够使用这样的东西。
update some_table set null_column = not_null_column where null_column is null
更新你的表
SET ColumnB = ColumnA
哪里
ColumnB IS NULL
AND ColumnA不是NULL;