Problema:
Si desidera ordinare il risultato di una query SQL in ordine crescente o decrescente.
Esempio:
Il nostro database ha una tabella denominata salary_information
con i dati nelle colonne id
, first_name
, last_name
e monthly_earnings
. Vogliamo ordinare i dipendenti in base ai loro monthly_earnings
in ordine decrescente.
id | nome | cognome | guadagno_mensile |
---|---|---|---|
1 | Calvin | Rio | 3500 |
2 | Alan | Paterson | 4000 |
3 | Kurt | Evan | 2300 |
4 | Alex | Watkin | 5500 |
Soluzione:
Useremo un ORDER BY
clausola. Ecco la domanda:
Useremo la funzione CURRENT_DATE
per ottenere la data corrente:
SELECT first_name, last_name, monthly_earnings FROM salary_information ORDER BY monthly_earnings DESC
Ecco il risultato della query:
first_name | cognome | guadagno_mensile |
---|---|---|
Alex | Watkin | 5500 |
Alan | Paterson | 4000 |
Calvin | Rio | 3500 |
Kurt | Evan | 2300 |
Ora possiamo vedere che Alex Watkins è il primo della lista, il che significa che guadagna di più.
Discussione:
Usa un ORDER BY
clausola se si desidera ordinare il set di dati in ordine crescente o decrescente. La sintassi per un ORDER BY
clausola è la seguente:
SELECT col1, col2, … FROM table ORDER BY col1, col2, … ASC|DESC;
In quanto sopra, ASC|DESC
significa che dovresti scegliere la parola chiave ASC
(crescente) o DESC
(decrescente) per ordinare il set di dati nel modo desiderato.
Oltre a ordinare per colonne numeriche, puoi anche ordinare per colonne di testo. Un ORDER BY
La clausola ordina le colonne di testo in ordine alfabetico.
Invece del nome della colonna, puoi anche utilizzare la posizione della colonna contando da sinistra. Quindi, nel nostro esempio, invece di scrivere:
ORDER BY monthly_earnings DESC
puoi anche scrivere:
ORDER BY 3 DESC
Se vuoi ordinare la tabella dall'esempio in base al first_name
colonna in ordine alfabetico (crescente), è possibile utilizzare la seguente query:
SELECT first_name, last_name, monthly_earnings FROM salary_information ORDER BY first_name ASC
Vale anche la pena notare che puoi ordinare per più colonne. Ciò è utile quando alcuni valori in una determinata colonna vengono ripetuti ed è necessario un ordinamento aggiuntivo. In questo caso, separa i nomi delle colonne con virgole nella clausola ORDER BY.
Puoi anche ordinare in ordine crescente per una colonna e in ordine decrescente per un'altra. Di seguito viene illustrata la sintassi di questa combinazione:
ORDER BY Col1 ASC, Col2 DESC;
Se ometti ASC
o DESC
parola chiave, per impostazione predefinita viene eseguito un ordinamento crescente.