2012-04-15 70 views
0

我有一個名爲releases的表,它是'音樂'數據庫的一部分。該表由兩列組成; cd_id,band_idMySQL - 與請求值相關聯的多個值

我想列出每個cd所涉及的cd_id和波段數,其中兩個或多個band_id與一個cd_id值關聯。

你能幫我解釋一下嗎?先謝謝你。

回答

1

這是一個聚集COUNT()HAVING子句:

SELECT 
    cd_id, 
    count(*) AS numbands 
FROM releases 
GROUP BY cd_id 
HAVING numbands >= 2 

加上GROUP BY cd_idCOUNT(*)返回band_idcd_id數量,並且爲了與2+ band_id限制這些到的版本中,一個HAVING子句指定numbands(賦予計數值的別名)>= 2

請注意,這裏假定每個band_id僅按cd_id列出一次。如果情況並非如此,獲得獨特的樂隊每張CD,使用

COUNT(DISTINCT band_id) AS numbands 

,而不是COUNT(*) AS numbands

1

假設發行不爲CD_ID

select CD_ID, count(*) 
from releases 
GROUP BY CD_ID 
HAVING count(*) > 1 
列出相同的頻段兩次