所以Table结构就是这个
CD id | Artist id
我想要返回在此表格中不止一次出现的艺术家,就像使用多张CD一样。
我正在使用Mysql,那么最好的SQL查询是什么?
答案 0 :(得分:3)
首先,您按照artist_id对记录进行分组,然后您可以使用HAVING
子句,该子句允许您根据聚合过滤数据,例如COUNT
或SUM
< / 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);