我有这样的数据。
A B
----------
dataA 1
dataB 2
dataC 3
----------
我能做到
"UPDATE table SET A = `dataNew` WHERE A = `dataC`;"
但是我在进行这样的更新时遇到问题
"UPDATE table SET A = 'dataA' WHERE A = 'dataC';"
如何附加,以便如果数据存在,它将变成
"UPDATE table SET A = 'dataA_1' WHERE A = 'dataC';"
我试试
UPDATE table SET A = 'dataA' WHERE A = 'dataC' ON DULPLICATE KEY UPDATE A = CONCAT('dataA', '_1');
但它无效。有人知道该怎么做吗?
最佳答案
如果我理解正确的话,您需要检查新值是否存在。这有点棘手。您不能使用联接
或交叉联接
,因为如果该列不存在,则不会返回任何行。因此,这使用了左连接
:
UPDATE table t left join
(select t.*
from table t
where A = 'dataA'
) tA
on 1=1
SET t.A = (case when tA.A is not null then 'dataA_1' else 'dataA' end)
WHERE t.A = 'dataC';
关于MySQL查询: UPDATE on duplicate key,追加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26316079/