使用UPDATE改进增量ID列

时间:2011-06-02 16:51:42

标签: 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 - 我想这意味着我真的需要一个更优雅的解决方案。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

你不能生成一个表格的视图,你可以在其中添加一个表达式列,它可以像你提出的那样生成一个唯一的标识符,然后导入视图吗?

答案 2 :(得分:0)

我最终这样做,因为没有任何工作:

update table set accountnumber = floor(rand() * 999999999)