mysql - 如何按特定顺序更新 MySQL 行?

标签 mysql sql

我正在尝试更改表中每一行的 id(主键,AUTO_INCREMENT):

UPDATE foo SET id = id + 4;

但它给了我:

Duplicate row for primary key value 5

或者类似的东西。

我该如何解决这个问题?是否有查询以倒序更新行,这样就不会发生这种情况?

谢谢。

最佳答案

这是在单个 SQL 语句中执行此操作的解决方案。

UPDATE     foo F 
INNER JOIN (SELECT id FROM foo ORDER BY id DESC) F2 
ON         F.id = F2.id 
SET        F.id = F.id + 4

关于mysql - 如何按特定顺序更新 MySQL 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22033889/

相关文章:

c# - 如何在不安装任何数据库服务器的情况下在本地运行带有数据库的桌面应用程序?

mysql - 用父子关系连接三个表

mysql - 组合三个 SELECT 语句时出现问题,UNION 不起作用

php - 使用 PHP+MYSQL+JSON+FBGRAPH 为随机元素传递错误数据

mysql - 选择指定年份的新商品或返回商品

php - 在作为 FastCGI 运行的 HHVM 上禁用持久数据库连接

java - 如何将硬编码的 SQL 查询传递到 JdbcBatchItemWriter 中?

mysql - 当标识符不是保留字或带有空格时,为什么必须使用反引号?

sql - 如何使用hive2到Hadoop的连接在Workbench\j中搜索数据库\表?

PHP 连接 SQL