簡體   English   中英

使用同一表列行中的值更新表行

[英]Update table row with values from same table column row

我想更新列的值created_at與列的值updated_at ,其中在列的值created_at0000-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日期時間值。 盡管您不同意可以刪除對COALESCE的調用,但我在答復中以相同的方式對待NULL

我認為您可以通過簡化的方式來完成此操作。 為什么要堅持一個查詢..? 首先選擇,然后更新。 嘗試這個..

     select 

        value1 from tableName 

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

     update sametableName set someColumn= value11

         where....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM