在 MySQL 上,这不会运行:
delete from robottinosino where date = (select max(date) from robottinosino);
错误信息:
ERROR 1093 (HY000): You can't specify target table 'robottinosino' for update in FROM clause
问题:
- 为什么? (强调“为什么”,这样 Q 就不会被错误地标记为“重复”)
- 如何解决?
最佳答案
MySQL 不允许您从您也从中进行选择的表中删除。在许多情况下,这是一种竞争条件 - 您可能会在查询的选择部分有机会检索它们之前从表中删除记录。
在你的情况下,查询应该被允许,因为这场比赛没有任何危险,但 MySQL 不够聪明,无法解决这个问题。
这里有一个解决方法:MySQL Error 1093 - Can't specify target table for update in FROM clause
关于MySQL选择重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11525077/