SQL设置一列的值等于同一表中另一列的值


94

我有一个带有两个DATETIME列的表。

其中之一从不为NULL,但其中之一有时为NULL。

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

我已经尝试过该示例,但是所选答案中的SQL无法执行,因为MySQL Workbench似乎不喜欢UPDATE中的FROM。

Answers:


156

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

update your_table
set B = A
where B is null

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

20

我会这样:

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

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

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

如果B为空,则COALESCE跳过它并改用A。


5

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

update some_table set null_column = not_null_column where null_column is null

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.