2010-04-13 7 views
7

supposons que MySQL est quelque chose comme çagroupe mysql par et compter les lignes problème

select x,y 
from xx 
group by y 

je veux savoir combien de lignes sélectionner obtiendra, je l'ai essayé d'utiliser le nombre, mais il ne reviendra pas tous les résultats puisque j'utilise le groupe par.

comment faire cela?

Merci

+0

Voulez-vous savoir combien de lignes dans chaque groupe? Ou combien de lignes sont dans tous les groupes? Ou combien de groupes? – keithjgrant

+0

toutes les lignes que cette sélection renvoie – trrrrrrm

Répondre

14

Vous pouvez envelopper votre requête comme ceci:

SELECT COUNT(*) FROM 
    (select x,y 
    from xx 
    group by y) sub; 
+3

Une idée de comment cela pourrait-il être fait si le serveur MySQL en question n'autorise pas les sous-requêtes? –

0

Supposons que vous ayez une table avec le contenu ci-dessous:

------------------- 
| ID | NAME | GROUP | 
+-------------------+ 
| 1 | A | 1 | 
+-------------------+ 
| 2 | B | 2 | 
+-------------------+ 
| 3 | C | 2 | 
+-------------------+ 
| 4 | D | 3 | 
+-------------------+ 
| 5 | E | 1 | 
+-------------------+ 
| 6 | F | 3 | 
+-------------------+ 

L'auto GAUCHE suivant REJOIGNEZ compte le nombre de valeurs distinctes dans GROUP.

SELECT COUNT(*) 
FROM table AS t1 
LEFT JOIN table AS t2 ON t2.GROUP = t1.GROUP AND t2.ID > t1.ID 
WHERE t2.id IS NULL; 

Ce que cette requête fait est de trouver, pour chaque groupe, l'élément ayant l'ID le plus élevé.