2010-04-13 33 views
7

powiedzmy mysql jest coś takiegogrupy mysql przez i liczyć wierszy problemu

select x,y 
from xx 
group by y 

chcę wiedzieć, ile wierszy, które wybrać dostanie, próbowałem użyć licznika, ale nie zwróci wszystkie wyniki ponieważ używam grupy według.

jak to zrobić?

Dzięki

+0

Chcesz wiedzieć, ile wierszy są w każdej grupie? Lub ile wierszy znajduje się we wszystkich grupach? Lub ile grup? – keithjgrant

+0

wszystkie wiersze, które ten wybór zwraca – trrrrrrm

Odpowiedz

14

Można owinąć zapytanie tak:

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

Czy wiesz, jak to zrobić, jeśli dany serwer MySQL nie zezwala na podzapytania? –

0

Załóżmy, że masz tabelę z poniższej treści:

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

Poniższy własnym LEFT JOIN zlicza liczbę różne wartości w grupie.

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; 

Co to jest to zapytanie, to się dowiedzieć, dla każdej grupy, element o najwyższym identyfikatorze.

Powiązane problemy