首页 > 解决方案 > 更新条件以更改索引行

问题描述

我有来自表 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。

标签: mysql

解决方案


使用CASE表达式:

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

但请注意,这index是一个保留的 MySQL 关键字,这就是为什么我必须在上面的查询中将它放在反引号中。您应该避免使用保留关键字在 MySQL 中命名您的对象。


推荐阅读