我有一张表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
如果Col1
和Col2
都是唯一的,我想运行单查询:
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
扩展名的模拟。)
答案 0 :(得分:0)
环顾四周后,我很确定无法做到这一点。手册中没有提到UPDATE
或IGNORE
以外的任何内容。请求的操作等同于在ON DUPLICATE KEY
语句中执行DELETE
。 (你做不到的。)
以下代码执行任务,我不喜欢将其包装在事务中,但这是目前唯一的方法。
UPDATE