2011-04-14 74 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