2012-06-15 3 views
5

Ci sono altre domande qui che sembrano simili ma non lo sono. Ho una query che restituisce un gruppo di righe con group by e voglio applicare un limite al gruppo totale per righe, non le righe totali utilizzate per creare i gruppi.Come si limita il gruppo per righe in una query mysql?

ID TYPE  COLOR  SIZE 
---------------------------------------- 
1  Circle  Blue   Large 
2  Circle  Red   Large 
3  Square  Green  Large 
4  Circle  Purple  Large 
5  Circle  Blue   Small 
6  Circle  Yellow  Medium 
7  Circle  Black  Large 
8  Oval  Blue   Large 
9  Circle  Gray   Small 
10 Triangle Black  Large 
11 Star  Green  Large 
12 Triangle Purple  Large 

SELECT size, type FROM clothes WHERE size = 'large' GROUP BY type LIMIT 0, 5 

TYPE  SIZE  ROWS 
---------------------------  
Circle  Large  4 
Square  Large  1 

^^^^ 2 GROUP BY righe che hanno già esaurito il mio limite

TYPE  SIZE  ROWS 
---------------------------  
Circle  Large  4 
Square  Large  1 
Oval  Large  1 
Triangle Large  2 
Star  Large  1 

^^^^ QUI è quello che voglio, LIMITE applicata ai gruppi

Ci deve essere una sottoquery o qualcosa che posso fare qui, ma non lo sto capendo.

Grazie.

+2

Non è chiaro cosa stai cercando di fare. Puoi mostrare alcuni dati di esempio dal tuo tavolo e mostrare esattamente quale risultato desideri. Forse puoi anche ridurre il limite da 25 a 5 per semplificare l'esempio. –

+0

Non riesco a pubblicare la mia vera query e il set di dati poiché è troppo grande, se questa risposta è corretta dovrebbe essere applicata. – Tomas

risposta

4

questo funziona per me:

SELECT type, size, COUNT(*) AS rows 
FROM clothes 
WHERE size = 'large' 
GROUP BY type 
LIMIT 0, 5 

Risultati in:

type  size rows 
------------------------ 
Circle Large  4 
Oval  Large  1 
Square Large  1 
Star  Large  1 
Triangle Large  2 

LIMIT si dovrebbe applicare dopo GROUP BY, quindi non capisco il problema.

+0

Sì, questo in effetti funziona. Il mio problema nella mia domanda reale è che stavo raggruppando per più di una cosa, il che significava che si trattava di scomporre in righe separate. – Tomas

3
SELECT * FROM (
    SELECT id, color, size, type FROM clothes WHERE size = 'large' GROUP BY type 
) AS baseview LIMIT 0, 25 
0

che ne dici di contare quanti ce ne sono?

select color, size, type, count(id) from clothes where size = 'large' group by size, type, color; 

Sono nuovo di programmazione SQL, ma questo dovrebbe restituire il seguente, in questo modo si utilizza 1 linea per ogni colore/Combinazione/tipo e ottenere un conteggio quantità dopo di esso.

grande camicia rossa 4

Verde grande camicia 6

verdi grandi pantaloni 2

e così via ...

Problemi correlati