MySQL查询: UPDATE on duplicate key,追加数据

标签 mysql sql

我有这样的数据。

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/

相关文章:

php - 未根据数据库信息设置值

php - XML解析错误: junk after document element. Google map 数据库交互

sql - 使用 NOT EXISTS 接受所有贷款的借款人

sql - 数据库设计 - NULL 外键

mysql - SQL 交集和并集

php - 一个SQL中的两个表,查询

php - 检查phonenumber是否相等,然后更新其他

mysql - 如何在 MySQL SELECT 结果集中包含自定义计数?

php - 将用户的 "rating"存储在配置文件中或不断运行 SQL 查询以从单独的表中获取平均值

sql - 使用 pl sql 将 xml 文件解析为 2 个 oracle header-detail 表