You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将含嵌套SELECT子查询的SQL语句改写为JOIN语句的技术咨询

SQL改写方案

改写思路

原语句为关联子查询实现:统计每个银行名下所有贷款类型账户的总余额,无对应贷款账户的银行总余额返回0。改写时使用LEFT JOIN保证所有银行记录都被保留,避免丢失无贷款账户的银行数据。

改写后SQL

SELECT 
  bank.bank_name,
  COALESCE(SUM(account.balance), 0) AS total
FROM bank
LEFT JOIN account 
  ON account.bank_name = bank.bank_name 
  AND account.account_type = 'loan'
GROUP BY bank.bank_name

注意事项

  • 禁止替换为INNER JOIN,否则无贷款账户的银行会被直接过滤,与原语句输出结果不一致
  • account.account_type = 'loan'过滤条件必须写在JOIN的ON子句中,不能写在WHERE子句里,否则LEFT JOIN会退化为等效INNER JOIN,同样会丢失无贷款账户的银行记录
  • 分组字段为bank.bank_name,保证每个银行对应唯一一条统计结果
  • COALESCE用于将无匹配贷款账户时SUM返回的NULL值转为0,完全对齐原语句的逻辑

内容的提问来源于stack exchange,提问作者M Mohsin Mahar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:18:02