我已经阅读了已经发布的问题的答案,但最后他们没有帮助 所以我知道在MySQL中,你不能修改你在SELECT部分使用的同一个表 但是:以下SQL语句将如何工作?
update keys_from_table_sorted
set l.nummer =
(select @curRow := @curRow + 1 AS row_number
from keys_from_table_sorted l
join (select @curRow := 0) r);
我尝试使用select语句中的row_number更新表'keys_from_table_sorted'中的字段'nummer'。
答案 0 :(得分:2)
你可以这样做
SET @curRow := 0;
UPDATE keys_from_table_sorted
SET nummer = (@curRow := @curRow + 1)
ORDER BY <column_name> -- You should specify order
注意:除非您使用ORDER BY
子句,否则无法保证记录顺序。因此,请始终明确指定它是SELECT
还是UPDATE
。否则你可能会得到毫无意义的行号。
这是 SQLFiddle 演示