MySQL选择重构

Rob*_*ino 0 mysql

在MySQL上,这不会运行:

delete from robottinosino where date = (select max(date) from robottinosino);
Run Code Online (Sandbox Code Playgroud)

错误信息:

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

题:

  • 为什么?(强调"为什么"所以Q不会被错误地标记为"重复")
  • 怎么解决?

Mar*_*c B 5

MySQL不允许您从您正在选择的表中删除.在许多情况下,这是一种竞争条件 - 您可能在查询的选择部分有机会检索它们之前从表中删除记录.

在你的情况下,应该允许查询,因为没有任何这种竞争的危险,但MySQL不够聪明,无法弄清楚.

这里有一个解决方法:MySQL错误1093 - 无法在FROM子句中指定更新的目标表