鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ Mysql 多個(gè)count查詢結(jié)果返回錯(cuò)誤,求助,謝謝

Mysql 多個(gè)count查詢結(jié)果返回錯(cuò)誤,求助,謝謝

Mysql 多個(gè)count查詢結(jié)果返回錯(cuò)誤,求助,謝謝

表結(jié)構(gòu)

  1. 表user (用戶表) 略...
  2. 表activity (活動(dòng)表) 略...
  3. 表my_calendar_subscribe (用戶關(guān)注活動(dòng))

    id(自增id), tempid (userid), activity(活動(dòng)id)

  4. 表my_calendar_sign(用戶加入活動(dòng))

    id(自增id), tempid(userid), activity(活動(dòng)id)

目標(biāo):

  • 查詢某userid的加入活動(dòng)列表,以及其中每個(gè)活動(dòng)的當(dāng)前關(guān)注人數(shù)和加入人數(shù)。

問(wèn)題
查詢某userid的加入活動(dòng)列表,以及其中每個(gè)活動(dòng)的當(dāng)前關(guān)注人數(shù)

select 
        a.activity,
        count(sub.activity) now_sub
from 
        my_calendar_sign a 
left join 
        my_calendar_subscribe sub
on 
        a.activity = sub.activity
where 
        a.tempid = 6
group by 
        a.activity

---結(jié)果OK

clipboard.png

查詢某userid的加入活動(dòng)列表,以及其中每個(gè)活動(dòng)的當(dāng)前加入人數(shù)

select 
        a.activity,
        count(s.activity) now_sign
from 
        my_calendar_sign a 
left join 
        my_calendar_sign s
on 
        a.activity = s.activity
where 
        a.tempid = 6
group by 
        a.activity

---結(jié)果OK
clipboard.png

查詢某userid的加入活動(dòng)列表,以及其中每個(gè)活動(dòng)的當(dāng)前關(guān)注人數(shù)和加入人數(shù)

select 
        a.activity,
        count(sub.activity) now_sub,
        count(s.activity) now_sign
from 
        my_calendar_sign a 
left join 
        my_calendar_subscribe sub
on 
        a.activity = sub.activity
left join 
        my_calendar_sign s
on 
        a.activity = s.activity
where 
        a.tempid = 6
group by 
        a.activity

---結(jié)果NOK

clipboard.png

是不能重復(fù)group by同一個(gè)字段嗎,
而且為什么只有其中一個(gè)結(jié)果行是有問(wèn)題的?

求助,謝謝

回答
編輯回答
傲嬌范

你可以試試這樣:

select 
        a.activity,
        count(distinct sub.id) now_sub,
        count(distinct s.id) now_sign
from 
        my_calendar_sign a 
left join 
        my_calendar_subscribe sub
on 
        a.activity = sub.activity
left join 
        my_calendar_sign s
on 
        a.activity = s.activity
where 
        a.tempid = 6
group by 
        a.activity

count的時(shí)候記得用能夠唯一標(biāo)識(shí)my_calendar_subscribemy_calendar_sign記錄的字段,比如各自的id,不要用activity

2017年12月13日 10:50