mysql left join 出現的結果會重復


left join 基本用法

 

MySQL left join 語句格式

A LEFT JOIN B ON 條件表達式

 

left join 是以A表為基礎,A表即左表,B表即右表。

左表(A)的記錄會全部顯示,而右表(B)只會顯示符合條件表達式的記錄,如果在右表(B)中沒有符合條件的記錄,則記錄不足的地方為NULL。

      使用left join, A表與B表所顯示的記錄數為 1:1 或 1:0,A表的所有記錄都會顯示,B表只顯示符合條件的記錄。

       但如果B表符合條件的記錄數大於1條,就會出現1:n的情況,這樣left join后的結果,記錄數會多於A表的記錄數。

所以解決辦法 都是從一個出發點出發,使A表與B表所顯示的記錄數為 1:1對應關系。

解決方法

1、select DISTINCT(id) from a left join b on a.id=b.aid   DISTINCT查詢結果是  第一個表唯一的數據   重復的結果沒顯示出來

2、select * from a left join(select id from b group by id) as b on a.id=b.aid  拿出b表的一條數據關聯  使A表與B表所顯示的記錄數為 1:1對應關系。

3、select * from a left join (select  max(id)  from table  group by id) as b on a.id=b.aid  拿出b表的最后一條數據關聯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM