[英]Update table row with values from same table column row
我想更新列的值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
如何修改查詢?
您的別名不適當,但我會使用聯接來表達此更新:
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.