2012-04-15 53 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 
列出相同的频段两次