求助oracle和sqlserver数据库高手,左连接查询问题

2024-12-30 16:55:41
推荐回答(2个)
回答1:

你之所以A显示多个是因为B或C有多个对应A的相同AID但内容不相同的情况
如 A: 1,ab
B: 1,bc,1
2,bd,1
C: 1,cd,1
2,ce,1
3,cf,1
这样为了全部显示B和C的内容,必然要重复显示A的AID
你的所谓只用左连接本身就有问题,首先你不会确定A、B、C的记录大小,用左连接必然是错的结果,你可以把问题再描述清楚,想要的结果写出来,这样才能解决问题

回答2:

Select A.ID,A.NAME, B.ID,B.NAME,C.ID,C.NAME
From A
Left Join B
On A.ID=B.AID
Left Join C
On A.ID=C.AID

第一个Left Join:
LEFT JOIN 关键字会从左表 (A) 那里返回所有的行,即使在右表 (B) 中没有匹配的行。
第二个Left Join:
LEFT JOIN 关键字会从左表 (A) 那里返回所有的行,即使在右表 (C) 中没有匹配的行。

若数据比较多,建议B,C表建立关于字段AID的索引