MariaDB-MySQL impostare un certo valore di una colonna per primo in un ordinamento

22 marzo 2022

​Con MariaDB-MySQL possiamo impostare la clausola ORDER BY in una istruzione SELECT in modo che un certo valore di una colonna compaia per primo o per ultimo.
Per esemplificare supponiamo di avere una tabella con la seguente struttura:
MariaDB [miodb]> SELECT * FROM colori;
+--------+---------------+
| Id | Descrizione |
+--------+---------------+
| 1 | bianco |
| 2 | rosso |
| 3 | blu |
| 4 | giallo |
| 5 | verde |
+--------+---------------+
5 rows in set (0.001 sec)
Se adesso vogliamo ordinare la tabella colori in ordine alfabetico cresente ma facendo apparire il colore rosso per primo possiamo impostare la query così:
MariaDB [miodb]> SELECT * FROM colori ORDER BY (Descrizione='rosso') DESC, Descrizione ASC;MariaDB [miodb]> SELECT * FROM colori;
+--------+---------------+
| Id | Descrizione |
+--------+---------------+
| 2 | rosso |
| 1 | bianco |
| 3 | blu |
| 4 | giallo |
| 5 | verde |
+--------+---------------+
5 rows in set (0.001 sec)
Per modificare la posizione in modo che il valore compaia per ultimo basterà usare ASC al posto di DESC.