从CD表返回艺术家与超过1张CD

时间:2011-11-16 04:39:52

标签: mysql sql

所以Table结构就是这个

          CD id        |          Artist id

我想要返回在此表格中不止一次出现的艺术家,就像使用多张CD一样。

我正在使用Mysql,那么最好的SQL查询是什么?

2 个答案:

答案 0 :(得分:3)

首先,您按照artist_id对记录进行分组,然后您可以使用HAVING子句,该子句允许您根据聚合过滤数据,例如COUNTSUM < / p>

SELECT Artist_id, COUNT(1)
FROM yourTable
GROUP BY Artist_id
HAVING COUNT(1) > 1

简短说明: 此查询将选择艺术家,以及他们在表格中的次数计数(此实例中的CD数量)

COUNT汇总在GROUP BY子句中,因此会计算Artist_Id的每个分组

HAVING子句然后表示我们只想返回具有COUNT(1) > 1的记录,该记录将指示该表的CD数量。

答案 1 :(得分:0)

SELECT Artist_id, COUNT(0) as `cdCount`
FROM tableName
GROUP BY Artist_id
HAVING cdCount > 1;

这应该给你的艺术家有超过1张CD(亚当已经解释过)

要获得具有max cds的那个,有两种方法:

(a)您按计数排序,然后选择第一个

SELECT Artist_id, COUNT(0) as cdCount
FROM tableName
GROUP BY Artist_id
HAVING cdCount > 1
ORDER BY cdCount
LIMIT 0, 1;

但是,如果你有超过1位艺术家的最大牌数为cds

,这将不会给你所有的艺术家

在这种情况下,请使用

(b)中

SELECT * FROM 
(SELECT Artist_id, COUNT(0) as cdCount
FROM tableName
GROUP BY Artist_id) t
HAVING cdCount = MAX(t.cdCount);