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。
解决方案
使用CASE
表达式:
UPDATE yourTable
SET `index` = CASE WHEN `index` = 1 THEN 3 ELSE 1 END
WHERE `index` IN (1, 3);
但请注意,这index
是一个保留的 MySQL 关键字,这就是为什么我必须在上面的查询中将它放在反引号中。您应该避免使用保留关键字在 MySQL 中命名您的对象。
推荐阅读
- sql - SQL - 删除多个条目
- java - 用于素数分解的 Java 程序打印太多
- java - 我如何要求对@PrimaryKeyJoinColumn 强制执行?
- d3.js - 如何“平滑” D3.js 折线图?(边缘非常锯齿)
- php - 尽管未达到文件大小限制,但文件未上传
- javascript - WebcamToy 如何在 getUserMedia() 网络摄像头视频上获得奇怪的效果?
- cuda - 由于“内存依赖性”,仅寄存器指令如何停止?
- java - libgdx getHeight() 没有覆盖整个屏幕
- ios - 无法将图像(个人资料图片)按钮添加到 UINavigationBar
- javascript - 有没有办法在 xAxis 悬停时触发点命中