mysql - 将嵌套选择转换为加入
问题描述
SELECT bank.bank_name,
(SELECT COALESCE(SUM(account.balance),0)
FROM account
WHERE account.bank_name = bank.bank_name
AND account.account_type = 'loan') AS total
FROM bank
账户表:
解决方案
您的查询可能比join
/group by
版本更有效,但它相当于:
SELECT b.bank_name, COALESCE(SUM(a.balance), 0) as total
FROM bank b LEFT JOIN
account a
ON a.bank_name = b.bank_name AND a.account_type = 'loan'
GROUP BY b.bank_name;
我应该指出,如果所有银行都有贷款(这似乎是合理的),则没有JOIN
必要:
SELECT a.bank_name, SUM(a.balance as total
FROM account a
WHERE a.account_type = 'loan'
GROUP BY a.bank_name;
推荐阅读
- ios - Xcode Instruments 10.12.1 显示默认项目的内存泄漏
- php - Laravel 任务:如何传递参数以在方法中使用?
- c++ - Boost Graph 查找一组顶点的邻居
- java - Spring Security 不提供静态内容
- dialogflow-es - 如何知道用户何时通过对话流电话切断呼叫
- ios - 如何与代码并排打开 SwiftUI 预览?
- apache-spark - 如何让数组列表的每个元素最常见(pyspark)
- shell - 将多个文件移动到具有相同名称的不同文件夹中
- abap - Generate template for a PDF form programmatically
- c# - 将 word doc 转换为 pdf - 在表格上获取空白单元格(服务器端)