MySQL选择重构

标签 mysql

在 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/

相关文章:

javascript - PHP MySQL : A non-numeric value is encountered

php - Where cell is not equal to.. MySQL查询(!=)

mysql - 当您分页时,按字母顺序分页会逐渐变慢(MySQL)

python - MySQL CREATE TABLE 在 DDL 语句中添加额外的行

MySQL 使用 join 返回不正确的数据

mysql - 使用别名更新表

php - 与 mysql 一起使用的泰语插入问题

C# .NET MySql 只返回最后的结果

mysql - 在 hibernate 条件中使用 mysql "order by case"

php - 有效地将电话号码前缀数据库与电话号码匹配?