Questo tutorial spiega la clausola MySQL ORDER BY e il suo uso con entrambe le opzioni ASC e DESC. Descriveremo questa istruzione MySQL con l’aiuto di semplici esempi.
1. Sintassi della clausola ORDER BY
2. ORDER BY W/O ASC o DESC
3. ORDER BY DESC
4. ORDER BY Relative Position
5. ORDER BY Due Campi ASC & DESC
Passiamo ora attraverso ogni sezione una per una.
Clausola ORDER BY MySQL
Il comando MySQL SELECT non restituisce una serie di risultati ordinati per default. Quindi, per ordinare l’output, dovete aggiungere la clausola ORDER BY nella query SELECT. Possiamo ottenere i seguenti risultati usando la clausola ORDER BY:
- Eseguire l’ordinamento dei record per un campo singolo/multiplo
- Ordina le righe per colonne distinte in ordine ascendente (ASC) o discendente (DESC).
Il seguente illustra la sintassi della clausola ORDER BY:
Sintassi
# MySQL ORDER BY ClauseSELECT field1, field2,...FROM target_tableORDER BY field1 , field2 ,...
La clausola ORDER BY per default esegue l’ordinamento in ordine crescente. Il termine ASC è un acronimo di crescente mentre DESC significa decrescente. Per DESC, devi menzionarlo nella tua query SELECT.
Si noti che puoi anche specificare un’espressione con l’ORDER BY in MySQL. Inoltre, entrambe le opzioni ASC e DESC sono opzionali per questa dichiarazione.
Ecco alcuni esercizi di esempio per fare pratica.
Esempi di clausola ORDER BY MySQL
Vediamo come usare la clausola ORDER BY con le query MySQL SELECT.
Utilizzando order by senza l’opzione asc/desc
Per dimostrarlo, creiamo prima una tabella chiamata Sample e popoliamola con alcuni dati di test.
CREATE TABLE Sample ( sample_id int NOT NULL, sample_name VARCHAR(20), vendor_name VARCHAR(20), sample_size INT );
Poi, inseriamo alcuni dati fittizi per i nostri test.
Dopo questo, dobbiamo controllare il contenuto della nostra tabella Sample. Vedi sotto.
SELECT *FROM Sample;
Il suo output è il seguente:
Ora, eserciteremo la clausola ORDER BY sul campo “vendor_name”. E, osserveremo l’insieme dei risultati ricevuti dal database MySQL:
SELECT *FROM SampleORDER BY vendor_name;
Ottienirai un risultato che mostra l’output seguente:
Puoi valutare dall’insieme dei risultati di cui sopra che l’ordinamento ha avuto luogo nell’ordine ascendente predefinito.
Ordina in ordine decrescente
In questo esempio, dimostreremo la clausola ORDER BY per ordinare in ordine decrescente. Per questo, dovremo specificarlo esplicitamente.
Ecco la dichiarazione MySQL per ordinare in ordine decrescente:
SELECT *FROM SampleORDER BY vendor_name DESC;
L’output di SELECT è:
Ordina per campo in posizione relativa
È possibile usare la clausola MySQL ORDER BY per ordinare per un campo in posizione RELATIVA.
Quando specifichiamo i nomi delle colonne nella query SELECT, il primo campo è alla posizione uno, il secondo alla due, e così via. Inoltre, possiamo convalidare questo fatto usando un esempio.
Ecco un’istruzione SELECT che visualizza i campi e ordina per posizione relativa.
SELECT # pos_1 pos_2 pos_3 pos_4 sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY 4 DESC;
Ecco il set di risultati che si ottiene dopo aver eseguito il comando di cui sopra:
Si può vedere che MySQL ha ordinato per campo sample_size che corrisponde alla quarta colonna.
Utilizzando ORDER BY per ordinare su due colonne
Abbiamo detto prima che si può usare ORDER BY su uno o più campi. In tal caso, MySQL tratta il primo campo come primario e il secondo come secondario. Pertanto, ordina prima il primario e poi il secondo.
Quindi, in questo esempio, dimostreremo ORDER BY su due colonne, un campo come ASC e un altro DESC. Inoltre, abbiamo bisogno di inserire più record per mostrare che anche la seconda colonna viene ordinata.
Potete ignorare l’istruzione INSERT data all’inizio sopra e usare quella sotto.
Ora, abbiamo alcune righe con gli stessi nomi di fornitori ma diverse dimensioni del campione. E, ora ordineremo in base ai campi vendor_name (primario) e sample_size (secondario).
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC, sample_size DESC;
Questa istruzione MySQL produce questo risultato:
Si può vedere che tutti i valori nel campo primario sono stati ordinati in ordine crescente. E, è anche evidente dall’output che l’ordinamento (in DESC) ha avuto luogo anche sul secondo.
Ora, scopriamo quale sarebbe stato il risultato, se avessimo ordinato solo sul nome del venditore.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC;
Questo comando darà come risultato:
Possiamo vedere dal risultato di cui sopra che le righe appartenenti a Google e Twitter non sono state ordinate sulle loro dimensioni del campione.
Speriamo che dopo aver concluso questo tutorial, vi sentiate a vostro agio nell’uso della clausola MySQL ORDER BY. Tuttavia, puoi fare più pratica con esempi per acquisire fiducia.
Anche, per imparare SQL da zero a fondo, leggi il nostro tutorial MySQL passo dopo passo.