mysql - 更新条件以更改索引行

标签 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 中命名对象。

关于mysql - 更新条件以更改索引行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51033619/

相关文章:

MySQL 语法错误从 &lt;textarea&gt; 插入类型 VARCHAR(999) <<< 已解决使用不正确的表名

mysql * 选择带有前缀的自定义列

PHP pdo登录脚本

php - 通过 HTML 表单覆盖 MySQL 值

php - PDO MySQL 每次插入两次?

mysql - 如何强制连续2个时间戳的范围

MySQL 存储过程语法

python - 外语python中的Windows CMD行错误

php - 实时/快速 mysql 查询生成器/查看器

java - SpringBoot 2使用HikariCP无法连接MySQL