2009-07-19 16 views
6

Ho una tabella con la seguente struttura:Come utilizzare MAX e LIMIT insieme in MySQL

ID | Colore

1 | rosso
2 | blu
3 | giallo
8 | purple
10 | verde
.
.
.
100 | giallo

Mi piacerebbe essere in grado di afferrare il valore MAX ID per le prime 5 righe.

Per esempio, mi piacerebbe fare qualcosa di simile in modo da: Selezionare MAX (ID) Dalla Tabella LIMITE 5

sperando che questo sarebbe restituire il valore 10

Ma, MySQL continua a tornare al 100 ... è come se MySQL non vedesse nemmeno la clausola LIMIT.

risposta

19

Sembra che tu voglia selezionare i primi 5 record (ordinati per ID) e quindi ottenere il valore più alto di quel gruppo? Se è così:

SELECT 
    MAX(ID) 
FROM 
    ( 
     SELECT ID 
     FROM YourTable 
     ORDER BY ID 
     LIMIT 5 
    ) as T1 
+1

probabilmente non è necessario "selezionare *"; solo "select id" dovrebbe essere sufficiente? (Non sono sicuro che lo faccia, ma forse selezionare solo i campi di cui hai bisogno potrebbe ridurre la memoria necessaria - che è sempre carina) –

+0

Funziona perfettamente !! Molte grazie. –

+0

Sì, questo dovrebbe essere 'SELECT ID' – gahooa

1

Utilizzare una selezione secondaria:

SELECT MAX(id) FROM (SELECT id FROM table LIMIT 5); 

che potrebbero non essere del tutto SQL valida, ma che dovrebbe darvi un'idea generale.

+4

SQL non valido. Hai bisogno di un alias su ogni tabella derivata + dovresti avere un order-by in modo da ottenere risultati "definiti". – gahooa

9

Non c'è modo migliore per farlo che subselect:

SELECT id FROM table LIMIT 4,1 

Ottenere una riga ma skip 4 prima .. Add 'ORDER BY id' se questo è tabelle MyISAM.

+2

Questo funziona per me. Penso che questa risposta sia sottovalutata. –

+1

Funziona se sai quante righe ci sono. Se si supera il conteggio delle righe, la query restituisce NULL. Avevo bisogno di questo per scopi batch, ma la versione massima è più adatta nel mio caso. – talereader

0

Se si dispone di una tabella con la seguente struttura

ID | Color 

1 | red 
2 | blue 
3 | yellow 
8 | purple 
10| green 
. 
. 
. 
100|yellow 

Il valore MAX ID per la prima 5 (AUTO_INCREMENT?) Valori è 5. Btw, il valore MAX ID per i primi 6 valori è 6 E 100 per tutti i valori. Cordiali saluti.

Problemi correlati