Como colocar o número 0 de uma coluna no final mantendo a ordem de pesquisa crescente no MySQL?
Vamos primeiro criar uma tabela:
mysql> create table DemoTable
-> (
-> Number int
-> );
Query OK, 0 rows affected (0.58 sec)
Insira alguns registros na tabela usando o comando insert:
mysql> insert into DemoTable values(9);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(4);
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable values(0);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(7);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(11);
Query OK, 1 row affected (0.12 sec)
Exiba todos os registros da tabela usando a instrução select:
mysql> select *from DemoTable
Saída
Isso produzirá a seguinte saída:
+--------+
| Number |
+--------+
| 9 |
| 4 |
| 0 |
| 7 |
| 11 |
+--------+
5 rows in set (0.00 sec)
A seguir está a consulta para usar ORDER BY e colocar 0 no final, mantendo a ordem de pesquisa crescente:
mysql> select *from DemoTable order by Number=0,Number;
Saída
Isso produzirá a seguinte saída:
+--------+
| Number |
+--------+
| 4 |
| 7 |
| 9 |
| 11 |
| 0 |
+--------+
5 rows in set (0.00 sec)