Используя MySql, могу ли я отсортировать столбец, но последний должен быть 0? - PullRequest
39 голосов
/ 28 июня 2010

Я хочу отсортировать по возрастанию столбца, но я хочу, чтобы 0 шел последним. Есть ли способ сделать это в MySql?

Ответы [ 3 ]

96 голосов
/ 28 июня 2010

Вы можете попробовать следующее:

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

Контрольный пример:

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);

Результат:

SELECT * FROM list ORDER BY a = 0, a;

+------+
| a    |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
|    5 |
|    0 |
|    0 |
|    0 |
+------+
8 rows in set (0.00 sec)
1 голос
/ 08 августа 2016

Вы можете сделать следующее:

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

Нулевые значения будут внизу списка.

0 голосов
/ 28 июня 2010

Следующий запрос должен помочь.

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