2011-04-14 23 views
28

¿Es posible agrupar los resultados y luego filtrar por cuántas filas hay en el grupo?Filtrar por COUNT (*)?

Algo como esto:

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

Respuesta

47

Usted desea utilizar tienen que filtrar en la función de agregado.

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

SUPERSTAR! ¡A punto de probarlo! – DonutReply

+0

Y la cláusula HAVING debe ir antes de ORDER BY también. – randalv

10

Es necesario utilizar HAVING

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

Aunque, SELECT * no tiene mucho sentido cuando se está agrupando. Asumo que es sólo un ejemplo

2

uso que tiene en su consulta:

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

¿Quieres una cláusula HAVING.

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