最近在做一個數據關聯處理分析需求,涉及left表right表LEFT JOIN,發現LEFT JOIN后的結果條數比left表的記錄多不少。
於是查看結果明細發現最終的結果,不少都是重復的。
最終確定是left 表和right表是一對多的關系,或者說right表有重復的記錄也是一樣的效果。
於在本地mysql中創建了兩個測試表left_join_test和joinids_test測試,如下:
最終結果:
總結:
1、mysql的left join從兩個表中聯合查詢數據,以左表為主,右表為輔。如果左表中有的內容右表中沒有,則用null填充,這是大家都很容易理解的。
2、右邊有重復數據(多條數據對應左邊表一條數據)時,右邊的數據會全部保留,導致最終的結果出現重復關聯。這時就要根據實際情況把右表的記錄去重,比如使用distinct 、group by 等處理,最終結果也可以使用GROUP_CONCAT()、count()
等連接聚合函數處理