48 votes

Filtrer par COUNT(*) ?

Est-il possible de regrouper les résultats et de les filtrer ensuite en fonction du nombre de lignes contenues dans le groupe ?

Quelque chose comme ça :

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

94voto

Joe Stefanelli Points 72874

Vous voulez utiliser HAVING pour filtrer sur la fonction agrégée.

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

14voto

JohnP Points 29302

Vous devez utiliser HAVING

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

Bien que, SELECT * n'a pas beaucoup de sens quand on fait des groupes. Je suppose que c'est juste pour un exemple

3voto

Utilisez l'expression "avoir" dans votre requête :

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

3voto

R Hill Points 789

Vous voulez une clause HAVING.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X