我有五个表,其中一个表链接到ID
的其他表TableA > ID | name
TableB > aID | cID
TableC > cID | nameC
TableY > aID | zID
TableC > zID | nameZ
像这样连接
TableA ID > (TableB aID > TableB cID) > TableC nameC
TableA ID > (TableB aID > TableY zID) > TableZ nameZ
当我不需要为每个表选择所有表时,我正在对每个表使用此查询
select A.ID, A.name from TableA A
left join TableB B on A.ID = B.aID
inner join TableC C on B.cID = C.cID;
select A.ID, A.name from TableA A
left join TableY Y on A.ID = Y.aID
inner join TableC Z on Z.zID = Z.zID;
现在我将他们中的两个加入到一个查询中,以便在它们上执行where子句,以获得这样的链接结果
select A.ID, A.name from TableA A
left join TableB B on A.ID = B.aID
inner join TableC C on B.cID = C.cID
left join TableY Y on A.ID = Y.aID
inner join TableC Z on Z.zID = Z.zID
where
C.nameC = 'nameC1' OR C.nameC = 'nameC2'
and
Z.nameZ = 'nameZ1' OR Z.nameZ = 'nameZ3'
但是在所有的查询中,所有结果都会在最后一个中重复多次,但我想只得到一个带有A.ID和A.name的行,如果它在where子句条件下并按顺序排列匹配最高的那个。