Mysql SQL将一列的值设置为同一表中另一列的值

Mysql SQL将一列的值设置为同一表中另一列的值,mysql,sql,Mysql,Sql,我有一个有两列DATETIME的表 其中一个永远不会为空,但其中一个有时为空 我需要编写一个查询,将B列的所有空行设置为等于a列中的值 我已经尝试过了,但是所选答案中的SQL没有执行,因为MySQL Workbench似乎不喜欢更新中的FROM。听起来您只在一个表中工作,所以类似于这样: UPDATE YourTable SET ColumnB=ColumnA WHERE ColumnB IS NULL AND ColumnA IS NOT NULL update your_table se

我有一个有两列DATETIME的表

其中一个永远不会为空,但其中一个有时为空

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


我已经尝试过了,但是所选答案中的SQL没有执行,因为MySQL Workbench似乎不喜欢更新中的FROM。

听起来您只在一个表中工作,所以类似于这样:

UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL
update your_table
set B = A
where B is null

我不认为你要找的是另一个例子。如果您只是从同一个表中的另一列更新一列,那么您应该能够使用类似的方法

update some_table set null_column = not_null_column where null_column is null

我会这样做:

UPDATE YourTable SET B = COALESCE(B, A);
COALESCE是一个返回其第一个非空参数的函数

在本例中,如果给定行上的B不为null,则更新为no-op


如果B为null,则合并将跳过它并使用A来代替。

以下是可能有助于将A列转换为B列的示例代码:

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;
版主注意-请不要回滚您的帖子的有效更新。