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

如何通过JOIN查询获取在本地拥有账户的客户姓名与所在地

用JOIN实现目标查询的正确方法

嘿,我来帮你搞定这个问题!你要找的是在自己所在地拥有账户的客户,核心是要确认客户的账户所属的支行,正好在客户自己的居住地对吧?先说说你之前写的SQL哪里有问题:你直接把branch的place和customer的place关联,但没把账户和对应的支行绑定起来——这会导致系统把客户和所有同地点的支行都关联一遍,不管客户的账户是不是在那个支行,结果肯定不对。

正确的逻辑应该是三层关联+地点匹配:

  • 先把客户表和账户表通过cust_no关联,找到每个客户对应的所有账户
  • 再把账户表和支行表通过支行编号(account.branchno和branch.branch_no)关联,找到每个账户实际所属的支行
  • 最后确保客户的所在地(customer.place)和这个支行的所在地(branch.place)是同一个地方

给你两种可行的写法,效果是一样的,看你习惯哪种:

写法一:用WHERE过滤地点匹配的记录

SELECT c.CUST_NAME, c.PLACE
FROM CUSTOMER c
JOIN account a ON c.CUST_NO = a.CUST_NO
JOIN branch b ON a.branchno = b.branch_no
WHERE c.PLACE = b.PLACE;

写法二:把地点匹配放到JOIN的关联条件里

SELECT c.CUST_NAME, c.PLACE
FROM CUSTOMER c
JOIN account a ON c.CUST_NO = a.CUST_NO
JOIN branch b ON a.branchno = b.branch_no AND c.PLACE = b.PLACE;

简单说下区别:写法一是先把所有关联的客户、账户、支行记录拉出来,再过滤出地点匹配的;写法二是在关联支行的时候就只挑和客户地点一致的,效率上差异不大,看你觉得哪种逻辑更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:20:10