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

SQL连接查询如何不遗漏数据?保留无交易记录的账户

解决SQL JOIN排除无交易账户的问题

你当前使用的是内连接(INNER JOIN),这种连接逻辑只会返回两张表中满足连接条件的匹配行,因此没有交易记录的Alice Johnson被排除在结果之外。

要保留所有账户(即使无交易记录),你需要改用左连接(LEFT JOIN)——它会完整保留左表(accounts)的所有数据,右表(transactions)中没有匹配的行时,对应列会填充为NULL。同时,因为SUM(NULL)会返回NULL,可以用COALESCE()函数将其转换为0,让结果更符合预期。

修改后的查询语句:

SELECT a.account_id, a.account_holder, COALESCE(SUM(t.amount), 0) AS total_transactions
FROM accounts a
LEFT JOIN transactions t ON a.account_id = t.account_id
GROUP BY a.account_id, a.account_holder;

执行后会得到包含所有账户的结果:

account_id | account_holder | total_transactions
-----------------------------------------------
1          | John Doe       | -700.00
2          | Jane Smith     | -100.00
3          | Alice Johnson  | 0.00

简单说明:

  • LEFT JOIN 确保左表所有行都被保留,不受右表匹配情况影响
  • COALESCE(SUM(t.amount), 0) 把无交易账户的总额从NULL转为0,让结果更直观可读

内容的提问来源于stack exchange,提问作者ChillPenguin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:37:06