更新,但在DUPLICATE KEY上删除

时间:2015-02-27 23:24:34

标签: mysql

是否有一种简单的方法可以执行"UPDATE... ON DUPLICATE KEY DELETE"之类的内容?

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

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

如果有人改变了#34; spice"样式的颜色为"蓝色",我希望它看到会有重复,并删除重复的记录。结果只有1条记录:

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

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

1 个答案:

答案 0 :(得分:0)

只做两个陈述。首先执行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;