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表的最后一條數據關聯