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

use*_*358 81 mysql sql

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

其中一个永远不是NULL,但其中一个有时是NULL.

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

我试过这个例子,但所选答案中的SQL没有执行,因为MySQL Workbench似乎不喜欢UPDATE中的FROM.

mu *_*ort 135

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

update your_table
set B = A
where B is null
Run Code Online (Sandbox Code Playgroud)


Ica*_*rus 18

UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL
Run Code Online (Sandbox Code Playgroud)


Bil*_*win 14

我会这样做:

UPDATE YourTable SET B = COALESCE(B, A);
Run Code Online (Sandbox Code Playgroud)

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

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

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


War*_*ula 7

以下示例代码可能会帮助您将 A 列复制到 B 列:

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)


rwi*_*ams 5

我认为您要找的不是其他示例。如果您只是从同一张表的另一列更新一列,则应该可以使用类似的内容。

update some_table set null_column = not_null_column where null_column is null
Run Code Online (Sandbox Code Playgroud)