簡體   English   中英

左外聯接,左表無重復

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM