left join 左表合併去重技巧
阿新 • • 發佈:2020-09-07
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表的記錄數。
針對上述1:n的情況,轉換為1:1的關係,需要對B表進行去重處理,使用非唯一標識的欄位做關聯,方法如下:
SELECT DISTINCT(a.id) FROM table_a a LEFT JOIN table_b b ON b.base_id = a.idWHERE a.discard_status = 0 AND a.org_id = 123456;
2.GROUP BY拿出b表的一條資料關聯 使A表與B表所顯示的記錄數為 1:1對應關係;
SELECT COUNT(0)FROM table_a a LEFT JOIN (select base_id from table_b group by base_id) b ONb.base_id = a.id WHERE a.discard_status = 0 AND a.org_id = 123456;
3.max值進行唯一關聯
SELECT COUNT(0) FROM table_a a LEFT JOIN (select max(id), t.* from table_b t group by base_id) b ON b.base_id = a.id WHERE a.discard_status = 0 AND a.org_id = 123456;