我阅读了已经发布的问题答案,但最终没有帮助。
所以我知道在 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”。
最佳答案
你可以这样做
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): You can't specify target table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20631370/