mysql中左串連後,最終的記錄數大於左邊表的記錄分析

來源:互聯網
上載者:User

標籤:files   syntax   max   大於   name   結果   border   資訊   情況   

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

例如:member與member_login_log表的結構如下,member記錄會員資訊,member_login_log記錄會員每日的登入記錄。member表的id與member_login_log表的uid是對應關係。

member 表

 

member_login_log 表

 

查詢member使用者的資料及最後登入日期:
如果直接使用left join

    select a.id, a.username, b.logindate from member as left join member_login_log as b on a.id = b.uid;

因member_login_log合格記錄比member表多(a.id = b.uid),所以最後得出的記錄為:

 

但這並不是我們要的結果,因此這種情況需要保證B表的合格記錄是空或唯一,我們可以使用group by來實現。

     select a.id, a.username, b.logindate from member as left join (select uid, max(logindate) as logindate from member_login_log group by uid) as b on a.id = b.uid;

 

總結:使用left join的兩個表,最好是1:1 或 1:0的關係,這樣可以保證A表的記錄全部顯示,B表顯示合格記錄。

mysql中左串連後,最終的記錄數大於左邊表的記錄分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.