Kan ik met MySql een kolom sorteren, maar 0 als laatste laten komen?

Ik wil sorteren op een kolom met ints oplopend, maar ik wil dat 0 als laatste komt. Is er een manier om dit in MySql te doen?


Antwoord 1, autoriteit 100%

Misschien wil je het volgende proberen:

SELECT * FROM your_table ORDER BY your_field = 0, your_field;

Testcase:

CREATE TABLE list (a int);
INSERT INTO list VALUES (0);
INSERT INTO list VALUES (0);
INSERT INTO list VALUES (0);
INSERT INTO list VALUES (1);
INSERT INTO list VALUES (2);
INSERT INTO list VALUES (3);
INSERT INTO list VALUES (4);
INSERT INTO list VALUES (5);

Resultaat:

SELECT * FROM list ORDER BY a = 0, a;
+------+
| a    |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    0 |
|    0 |
|    0 |
+------+
8 rows in set (0.00 sec)

Antwoord 2, autoriteit 2%

U kunt het volgende doen:

SELECT value, IF (value = 0, NULL, value) as sort_order
FROM table
ORDER BY sort_order DESC

Null-waarden staan ​​onderaan de lijst.


Antwoord 3, autoriteit 2%

SELECT * FROM your_table ORDER BY 0.1/your_field;

Antwoord 4

De volgende vraag zou voldoende moeten zijn.

(SELECT * FROM table WHERE num!=0 ORDER BY num) UNION (SELECT * FROM table WHERE num=0)

Other episodes