Problema:
Devi visualizzare i record di una determinata tabella ordinati per due colonne.
Esempio:
Il nostro database ha una tabella denominata employee
con le seguenti colonne:id
, first_name
, last_name
e salary
.
id | nome | cognome | stipendio |
---|---|---|---|
1 | Lisa | Ulman | 3000 |
2 | Ada | Muller | 2400 |
3 | Tommaso | Verde | 2400 |
4 | Michael | Muller | 3000 |
5 | Maria | Verde | 2400 |
Mostriamo tutte le informazioni per ciascun dipendente, ma ordiniamo i record in base allo stipendio prima in ordine decrescente e poi in base al cognome in ordine crescente.
Soluzione:
SELECT id, first_name, last_name, salary FROM employee ORDER BY salary DESC, last_name;
Questa query restituisce record ordinati in base a due colonne:salario e cognome .
id | nome | cognome | stipendio |
---|---|---|---|
4 | Michele | M uler | 3000 |
1 | Lisa | U lman | 3000 |
3 | Tommaso | G reen | 2400 |
5 | Maria | G reen | 2400 |
2 | Ada | M uler | 2400 |
Discussione:
Se vuoi selezionare i record da una tabella ma vuoi vederli ordinati secondo due colonne, puoi farlo con ORDER BY
. Questa clausola arriva alla fine della tua query SQL.
Dopo il ORDER BY
parola chiave, aggiungi prima il nome della colonna in base alla quale desideri ordinare i record (nel nostro esempio, stipendio). Quindi, dopo una virgola, aggiungi la seconda colonna (nel nostro esempio, last_name
). È possibile modificare l'ordinamento (crescente o decrescente) separatamente per ciascuna colonna. Se desideri utilizzare l'ordine crescente (dal basso verso l'alto), puoi utilizzare il ASC
parola chiave; questa parola chiave è facoltativa, tuttavia, poiché è l'ordine predefinito quando non ne viene specificato nessuno. Se vuoi usare l'ordine decrescente, inserisci il DESC
parola chiave dopo la colonna appropriata (nell'esempio, abbiamo utilizzato l'ordine decrescente per il salary
colonna).
Nel nostro esempio, abbiamo prima ordinato il risultato per stipendio in ordine decrescente (stipendi più alti in quelli più bassi) e poi per cognome in ordine crescente all'interno di quei record già ordinati.