重复键上的Mysql替换所有

时间:2015-08-29 06:45:35

标签: mysql

我有一张表T1

 Col1 | Col2
-------------
  a   |   2
  b   |   3

如果Col1是唯一且Col2不是,那么我可以运行查询:

INSERT INTO T1 (Col1, Col2)
VALUES (b,2)
ON DUPLICATE KEY UPDATE
Col2=VALUES(Col2);

现在表格如下:

 Col1 | Col2
-------------
  a   |   2
  b   |   2

如果Col1Col2都是唯一的,我想运行查询:

INSERT INTO T1 (Col1, Col2)
VALUES (b,2)
ON DUPLICATE KEY -- REPLACE ALL INSTANCES ?
Col1 = VALUES(Col1), Col2=VALUES(Col2);

结果如下:

 Col1 | Col2
-------------
  b   |   2

因此键“b”现在与键“2”相关联,取代了“a”的关联和“b”之前的关联。

是否有可以实现此目的的mysql查询或扩展? (显然,这可以通过多个查询完成,我正在寻找此用例的ON DUPLICATE扩展名的模拟。)

1 个答案:

答案 0 :(得分:0)

环顾四周后,我很确定无法做到这一点。手册中没有提到UPDATEIGNORE以外的任何内容。请求的操作等同于在ON DUPLICATE KEY语句中执行DELETE。 (你做不到的。)

以下代码执行任务,我不喜欢将其包装在事务中,但这是目前唯一的方法。

UPDATE