mysql - 使用 UPDATE 改造增量 ID 列

标签 mysql subquery

我有一个带有 ID 列的 MySQL 表,打算从外部数据导入,但对于这种情况,没有提供 ID。因此,我有一列纯零。我需要更新此列以在每一行中具有唯一值,并且这些数字没有意义。我可以想到几种方法来做到这一点,但我想知道正确的方法是什么。我的第一个想法是类似于 UPDATE table SET id = (SELECT max(id)+1 FROM table) - 但我喜欢可用时的优雅解决方案。

编辑: 结果运行此查询触发 1093: You can't specify target table for update in FROM clause - 我想这意味着我真的需要更多优雅的解决方案,也是。

最佳答案

UPDATE t
SET    t.id = q.id
FROM   TABLE t
       INNER JOIN
              ( SELECT MAX(id)+1 AS id
              FROM    TABLE
              )
              q
       ON     1 = 1

关于mysql - 使用 UPDATE 改造增量 ID 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217574/

相关文章:

mysql - 为什么这个简单的连接查询使用子查询会明显更快?

Mysql - 金额之间的平衡

mysql - 选择具有多个匹配 ID 的多行

php - 来自一组列的mysql唯一索引

java - hibernate原生SQL查询错误

sql - Oracle 子查询

java - 在负载较重的数据库的查询中使用子选择应考虑什么?

MYSQL 更新与 WHERE SELECT 子查询错误

php - 将动态添加的文本框的数据存储到 MySQL 表中

php - Mysql 查询查找给定日期范围内某个值出现的次数