Sql内部连接三个表,如果连接多个行,则获取单个行

时间:2015-05-28 10:39:02

标签: sql join

假设我有桌子, 表A,表B和表C. 表A和表B的主键与表C不同 我把tableA作为

aID aDetails
A1     abc
A2     xyz
A3     mno

TableB as

bID bDetails
B1    any
B2    some

TableC as

aID bID 
A1    B1
A2    B1
A3    B2

我使用的查询是

"select TableA.aID,TableB.bID from tableA 
inner join TableC on TableC.aID = TableA.cID 
inner join TableB on TableB.bID = TableC.cID "

我得到的结果是:

A1 B1 
A2 B1

我的实际要求是,由于A1和A2有共同的B1,我需要

A1  B1 or A2 B1

如果TableB中的多行与TableA中的Row连接,如何只获取单行?

2 个答案:

答案 0 :(得分:0)

只需在查询末尾添加group by语句:

Group by TableB.bid

答案 1 :(得分:0)

如果您只想要一行,请使用group bygroup by子句中的列应位于聚合函数中:

select min(a.aID),T b.bID
from tableA a inner join
     TableC c
     on c.aID = a.cID inner join
     TableB b
     on b.bID = c.cID
group by b.bID;