2011-10-16 12 views
6

Immagina di avere una tabella "utenti" con due campi: "età" e "nome". Voglio recuperare i primi dieci utenti più vecchi e quindi voglio questo elenco di dieci ordinati per nome.Ottieni un altro ordine dopo il limite con mysql

È possibile farlo con mysql?

Ho provato questo: (non funziona)

SELECT * FROM users order by age, name limit 10 

Grazie in anticipo per aiutare!

+0

Che cosa significa "non funziona"? –

+0

Hmm Ho provato una query simile su un tavolo simile (penso di si) e funziona bene per me ... – Serhiy

risposta

17

Utilizzare una selezione secondaria:

SELECT * FROM 
(
    SELECT * 
    FROM users 
    ORDER BY age DESC 
    LIMIT 10 
) AS T1 
ORDER BY name 

La select interno trovano le 10 righe che si desidera tornare, e di selezione esterna li mette nel giusto ordine.

+1

Per cosa è il 'T1'? –

+1

@Robert Harvey: è un alias per la tabella derivata. Sfortunatamente questo alias è necessario per soddisfare MySQL anche se non viene mai usato :(. Omettendo questo errore: 'Codice errore: 1248. Ogni tabella derivata deve avere il proprio alias' –

+1

Non è necessario un' AS' prima di esso ? –