[英]LEFT OUTER JOIN with no duplicates on left table
我有兩個表(假設“左”和“右”表)。 右表從無到有幾行與左表的每一行匹配。
我需要執行一個查詢,在該查詢中我可以以與LEFT OUTER JOIN相同的方式聯接兩個表,但左側表中的每個現有表僅獲得一行。 該行應該是對應於右表中最高ID的那一行。
NATURAL JOIN可以工作,但是我不會從左邊的表中獲取與右邊的任何行都不匹配的行。
嘗試這個:
Select L.[ValuesfromLeftTable], ...
R.[ValuesfromRightTable], ...
From LeftTable as L
Left Join RightTable as R
On R.Id = (Select Max(id)
From RightTable
Where FK = L.Id)
這就是我要做的:
select *
from `left` as l
LEFT JOIN `right` as r
on (l.id = r.left_id)
group by l.id
order by r.id
您可以使用GROUP BY子句僅顯示不同的記錄
SELECT Left.Field1, Left.Field2, ... Right.Field1, Right.Field2, ...
FROM tblLeft AS Left
LEFT JOIN (SELECT CommonID, Max([ID]) AS MaxID
FROM tblRight
GROUP BY CommonID) AS RightMax ON Left.CommonID = RightMax.CommonID
LEFT JOIN tblRight AS Right ON RightMax.MaxID = Right.[ID] AND Left.CommonID = Right.CommonID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.