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;