我读了已经贴出的问题答案,但最后还是没有帮助。
所以我知道在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/

10-13 03:24