ERROR 1093(HY000):您无法指定目标表

时间:2013-12-17 10:15:32

标签: mysql sql

我已经阅读了已经发布的问题的答案,但最后他们没有帮助 所以我知道在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'。

1 个答案:

答案 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 演示