mysql - 从表中删除数据时出现 sql 错误 - 删除的目标和源
问题描述
我正在尝试执行此查询。就是删除所有小于account
表中所有账户平均值的账户。但是,我收到此错误:
#1093 - Table 'account' is specified twice, both as a target for 'DELETE' and as a separate source for data
查询是:
DELETE
FROM account WHERE account_number IN
(
SELECT account_number FROM account
WHERE balance < (SELECT AVG (balance) FROM account)
);
我怎么解决这个问题?
解决方案
使用JOIN
:
DELETE a
FROM account a JOIN
(SELECT AVG(balance) as avg_balance
FROM account
) ab
ON a.balance < ab.avg_balance;
推荐阅读
- javascript - 访问javascript对象的条件属性
- scala - 如何过滤 Scala Map List 值
- node.js - 如何在 vscode 上使用 npm 命令
- elasticsearch - 如何使用 logstash+jdbc 和数据库触发器对 Elasticsearch 进行增量加载
- javascript - 如何更改模式窗口的内容
- python - 使用按钮属性使用 fig.update 更新跟踪的可见性?
- bigcommerce - 如何缩小占半页的装箱单上的徽标大小?
- public-key-encryption - 对称和非对称密钥加密问题
- karate - 如何在空手道 DSL 中所有功能文件的末尾调用 api
- angular - 在使用 Appium 进行 e2e 测试时,Css-selector 无法识别 iOS 混合应用程序中的 WEBVIEW 中的元素(内置 Ionic+angular)