使用来自同一表列行的值更新表行

c7rzv4ha  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(715)

我想更新列的值 created_at 列的值 updated_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

如何修改查询?

vhipe2zx

vhipe2zx1#

你的别名不合适,但我要使用连接来表达此更新:

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 在你的table上。我正在治疗 NULL 我的回答也是这样,不过你可以取消对我的电话 COALESCE 如果你不同意。

zd287kbt

zd287kbt2#

我想你可以用更简单的方法来做。。没有任何连接噱头;为什么你要坚持一个单一的查询。。?先选择,然后更新。试试这个。。

select 

        value1 from tableName 

        where columnX like '%someThing%' and columnY = 'SomeValue' as value11;

     update sametableName set someColumn= value11

         where....

相关问题