2011-04-14 71 views
28

是否可以对结果进行分组,然后根据组中有多少行进行过滤?按COUNT(*)过滤?

事情是这样的:

SELECT * FROM mytable WHERE COUNT(*) > 1 GROUP BY name 

回答

47

你要使用具有对聚合函数进行筛选。

SELECT name, COUNT(*) 
    FROM mytable 
    GROUP BY name 
    HAVING COUNT(*) > 1 
+0

SUPERSTAR!正要测试它! – DonutReply 2011-04-14 13:38:32

+0

而且HAVING子句也必须在ORDER BY之前。 – randalv 2013-12-30 19:49:31

10

您需要使用HAVING

SELECT * FROM mytable GROUP BY name HAVING COUNT(*) > 1 

虽然SELECT *不会使当你分组太大的意义。我认为它只是一个在你的查询为例

2

用途:

SELECT * FROM mytable GROUP BY name having COUNT(*) > 1 
3

你想要一个HAVING子句。

SELECT * 
FROM mytable 
GROUP BY name 
HAVING COUNT(*) > 1