Я хочу сортировать по столбцу ints по возрастанию, но я хочу, чтобы 0 был последним. Есть ли способ сделать это в MySql?
Используя MySql, могу ли я отсортировать столбец, но с последним 0?
Ответ 1
Вы можете попробовать следующее:
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)
Ответ 2
Вы можете сделать следующее:
SELECT value, IF (value = 0, NULL, value) as sort_order
FROM table
ORDER BY sort_order DESC
Нулевые значения будут ниже списка.
Ответ 3
Следующий запрос должен сделать трюк.
(SELECT * FROM table WHERE num!=0 ORDER BY num) UNION (SELECT * FROM table WHERE num=0)
Ответ 4
SELECT * FROM your_table ORDER BY 0.1/your_field;