更新条件以更改索引行

时间:2018-06-26 01:10:38

标签: mysql

我有来自表Z的数据

+------+-------+-------+
| id   | Data  | index |
+------+-------+-------+
|    1 |     A |     1 |
|    2 |     B |     2 |
|    3 |     C |     3 |
+------+-------+-------+

,然后将位置索引1更改为3,将3更改为1。 在这种情况下如何查询更新?如果运行条件索引为1并将值设置为3的查询,下一个条件索引3并将值设置为1?结果更新ID 1和3值索引3。

1 个答案:

答案 0 :(得分:0)

使用CASE表达式:

UPDATE yourTable
SET `index` = CASE WHEN `index` = 1 THEN 3 ELSE 1 END
WHERE `index` IN (1, 3);

但是请注意,index是保留的MySQL关键字,这就是为什么我不得不在上述查询中将其放在反引号中的原因。您应该避免使用保留关键字在MySQL中命名对象。