我读了已经贴出的问题答案,但最后还是没有帮助。
所以我知道在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语句中的行数更新“keys_from_table_sorted”表中的字段“nummer”。
最佳答案
你可以这样做
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演示
关于mysql - 错误1093(HY000):您无法指定目标表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20631370/