如何在同一张数据库表上两次施加左联接(left outer join)!

本文介绍了一种解决SQL查询中同一张表需要进行两次左连接的问题。在客户档案表与客户基本信息表关联时,由于存在两个不同字段需要与客户基本信息表连接,初始尝试的SQL语句无法达到预期效果。通过为第二次连接的表别名命名,成功实现了正确查询客户档案的详细信息,包括名称和联系人信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    今天拼sql时遇到一个问题:

             我有两张表:1.客户档案表(CT_CYK_CustomerBaseInfo),2.客户的基本信息表(T_BD_Customer )。

              在客户档案表中有一个字段(CFCustNameID),它作为外键和客户基本信息进行连接,这个字段代表客户的名称信息。

              在客户档案中我还有一个字段,它作为外键又和客户基本信息又有一个连接,这个字段代表客户的联系人。也就是说客户档案中有两个字段作为外键连接到客户基本信息表中,连接的却又不是同一条记录。

           现在我要查询客户档案的详细信息,刚开始,我拼出的sql如下:

           select *
           from  CT_CYK_CustomerBaseInfo  
           LEFT OUTER JOIN  T_BD_Customer ON  CT_CYK_CustomerBaseInfo.CFCustNameID=T_BD_Customer.FID  
           LEFT OUTER JOIN  T_BD_Customer ON  CT_CYK_CustomerBaseInfo.CFMainLinkMenID=T_BD_Customer.FID;

           接下来测试sql,sql语句有问题,不能同时左链接同一张表。

           后来我又改:

             select *
           from  CT_CYK_CustomerBaseInfo  
           LEFT OUTER JOIN  T_BD_Customer ON  CT_CYK_CustomerBaseInfo.CFCustNameID=T_BD_Customer.FID  
           and  CT_CYK_CustomerBaseInfo.CFMainLinkMenID=T_BD_Customer.FID;

           这次语法正确了,可是这连接的是满足on后两个条件的同一条记录,并不是我所要的查询结果。

           最后,我把客户的基本信息表进行的重新命名,然后修改了sql语句,取得成功,结果如下:

           select *
           from  CT_CYK_CustomerBaseInfo  
           LEFT OUTER JOIN  T_BD_Customer ON  CT_CYK_CustomerBaseInfo.CFCustNameID=T_BD_Customer.FID  
           LEFT OUTER JOIN  T_BD_Customer as  linkpeople                  ON      

           CT_CYK_CustomerBaseInfo.CFMainLinkMenID=linkpeople.FID;

           这样就实现了在一个数据库表中同时两次左联接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值