MySQL select重构

25 浏览
0 Comments

MySQL select重构

在MySQL上,这段代码无法运行:

delete from robottinosino where date = (select max(date) from robottinosino);

错误信息:

ERROR 1093 (HY000): 无法在FROM子句中指定目标表'robottinosino'进行更新

问题:

  • 为什么会出错?(强调“为什么”,以免错误地标记为“重复”)
  • 如何修复此问题?
0
0 Comments

MySQL不允许在从表中进行选择的同时删除该表中的数据。这在许多情况下会导致竞态条件,即在查询的select部分有机会检索到这些记录之前,您可能已经从表中删除了这些记录。

在您的情况下,查询应该是允许的,因为不存在这种竞态的危险,但是MySQL并不足够聪明以找出这一点。

这里有一些解决方法:MySQL Error 1093 - Can't specify target table for update in FROM clause

0