我想使用 updated_at
列的值更新 created_at
列的值,其中 created_at
列的值为 0000 -00-00。
我尝试了以下查询:
UPDATE tbl_message_types a
SET a.created_at = (
SELECT
c.updated_at
FROM
( SELECT b.updated_at
FROM tbl_message_types b
WHERE b.created_at LIKE '%0000-00-00%'
AND a.id = c.id ) AS c
)
AND a.created_at LIKE '%0000-00-00%';
但是查询结果如下:
> 1054 - Unknown column 'a.id' in 'where clause'
> Time: 0.008s
如何修改查询?
最佳答案
您的别名不合适,但我会使用连接来表达此更新:
UPDATE tbl_message_types a
INNER JOIN UPDATE tbl_message_types b
ON a.id = b.id AND
COALESCE(b.created_at, '0000-00-00') != '0000-00-00'
WHERE COALESCE(a.created_at, '0000-00-00') = '0000-00-00';
请注意,不清楚如何在表中得到 0000-00-00
的日期时间值。我在回答中以同样的方式处理 NULL
,不过如果您不同意,您可以删除对 COALESCE
的调用。
关于mysql - 使用同一表列行中的值更新表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52023324/