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