1. 程式人生 > >統計某張表中的id在另一張表中出現的次數

統計某張表中的id在另一張表中出現的次數

今天同事給我看了一條SQL語句,是要統計會員member表中每個會員的簽到次數,說到底就是要統計member表中的id在member_sign表中出現的次數。他問我的時候正好我跟主管發生了點不愉快,搞得我腦子亂七八糟的,竟然不知道該怎麼寫這條語句。等平靜下來之後一想這條語句十分的簡單,現在才體會到被人氣糊塗了到底是什麼樣子的。

其實只要構造一個子查詢就好了。

先將member_sign表中的member_id分組統計出來

select count(1) from member_sign group by member_id

這樣就得到每個簽到表中會員格子的簽到次數

然後再將member表和子查詢做個左外連線,並去除需要的欄位

select vm.id,vm.account,vs.num as num from vm_member as vm left join (select count(*) as num,member_id from vm_member_sign group by member_id) as vs on vm.id=vs.member_id

更完善點可以加上IFNULL防止出現null指

select vm.id,vm.account,IFNULL(vs.num,0) as num from vm_member as vm left join (select count(*) as num,member_id from vm_member_sign group by member_id) as vs on vm.id=vs.member_id