mysql - 更新,但在重复键时删除

标签 mysql

是否有一种简单的方法来执行诸如“更新...重复键删除”之类的操作?

假设我有这个,颜色+图案没有重复:

| style  | color | pattern |
----------------------------
| spice  | red   | dots    |
| sea    | blue  | dots    |

如果有人将“spice”样式的颜色更改为“blue”,我希望它看到会有重复,并删除重复的记录。结果只有 1 条记录:

| style  | color | pattern |
----------------------------
| sea    | blue  | dots    |

编辑:我很确定没有像上面这样的实际语法,但我认为可能有一些命令或连接的组合可以产生所需的结果。

最佳答案

只需执行两条语句即可。先执行 DELETE,然后就不会再执行 UPDATE,因为您已经删除了该行。

DELETE mytable WHERE style = 1 AND EXISTS ( SELECT 1 FROM mytable WHERE color = 'blue' AND style <> 1 );
UPDATE mytable SET color = 'blue' WHERE style = 1;
COMMIT;

关于mysql - 更新,但在重复键时删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28776052/

相关文章:

php - mysqli - 可以获取事务中之前两个查询的 insert_id 吗?

mysql - GWT:与 MySQL 共享 POJO

php - 当 php/sql 查询返回 null 时,禁用 ="true"出现在文本框中

MySQL 语句、JOIN

c# - 在 docker 机器上调试时 MySql 连接被拒绝

mysql - 删除和插入会为键 PRIMARY 抛出重复条目

php - 查询中的连接函数使查询运行速度变慢

mysql - 单表单列记录的笛卡尔积

php - 多个查询时按字母顺序排序?

php - mysql语句的写法