我的桌子:
----------------------------
| valueA | valueB | valueC |
----------------------------
| ... | ... | ... |
| ... | ... | ... |
我的代码:
INSERT INTO myTable (valueA, valueB, valueC) VALUES
(1, 2, 1),
(1, 2, 2),
(2, 1, 3),
(3, 4, 4)
on duplicate key update valueC = 5;
该声明的结果:
----------------------------
| valueA | valueB | valueC |
----------------------------
| 1 | 2 | 5 |
| 2 | 1 | 3 |
| 3 | 4 | 4 |
我不只是要更新新值A =旧值A,新值B =旧值B,还是新值A =旧值B,新值B =旧值A。
在我的示例中,表(1、2、1),(1、2、2)和(2、1、3)将是重复的。不只是(1、2、1)和(1、2、2)。
这是它的外观:
----------------------------
| valueA | valueB | valueC |
----------------------------
| 1 | 2 | 5 |
| 3 | 4 | 4 |
我如何用尽可能少的语句来做到这一点?预先感谢。
ALTER TABLE myTable
ADD COLUMN least_value INT AS ((LEAST(valueA, valueB))),
ADD COLUMN greatest_value INT AS ((GREATEST(valueA, valueB))),
ADD UNIQUE INDEX idx (least_value, greatest_value);