2016-08-15 27 views
1

出於測試目的的,這裏有一個表(釋放)看起來類似於真實數據MySQL的:多少一組

release_id group_id 
------------------------------ 
    1   5 
    2   5 
    3   6 
    4   7 

對於每一個版本,我需要找到多少個版本有在一組。結果集應該是這樣的

release_id total 
------------------------------ 
    1   2 
    2   2 
    3   1 
    4   1 

換句話說,RELEASE_ID 1屬於在組5,並且在第5組有2個版本.... RELEASE_ID 4是組7並且在只有1釋放組7 ...等等

我已經嘗試這樣的事情

SELECT r.release_id, COUNT(r.group_id) total 
FROM `release` r 
GROUP BY (r.group_id) 

但是,我沒有得到確切預期的結果集。

任何想法如何構建查詢? 感謝

回答

1
SELECT 
    R.release_id, GC.cnt total 
FROM 
    (SELECT group_id, COUNT(*) cnt FROM release GROUP BY group_id) GC 
    JOIN release R 
    ON GC.group_id = R.group_id 
0

看起來你已經有了通過逆轉的次數和組,

Select 
r.group_id, 
count (r.release_id) 
from 
release r 
group by r.group_id 
1

如果我正確理解你的問題,下面是一個使用correlated subquery一個選項:

select release_id, 
     (select count(*) from release r2 where r.group_id = r2.group_id) cnt 
from release 
1

你可以使用動態

select a.release_id, t.total 
(select group_id,COUNT(*) as total 
FROM `release`) t 
inner join `release` r2 
on t.group_id = r2.group_id