【发布时间】:2011-03-08 23:53:33
【问题描述】:
我想按一列整数升序排序,但我希望 0 排在最后。无论如何在MySql中这样做?
【问题讨论】:
标签: sql mysql sql-order-by
我想按一列整数升序排序,但我希望 0 排在最后。无论如何在MySql中这样做?
【问题讨论】:
标签: sql mysql sql-order-by
SELECT * FROM your_table ORDER BY 0.1/your_field;
【讨论】:
您可以执行以下操作:
SELECT value, IF (value = 0, NULL, value) as sort_order
FROM table
ORDER BY sort_order DESC
Null 值将在列表的下方。
【讨论】:
下面的查询应该可以解决问题。
(SELECT * FROM table WHERE num!=0 ORDER BY num) UNION (SELECT * FROM table WHERE num=0)
【讨论】:
您可能想尝试以下方法:
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)
【讨论】:
ORDER BYsyntax here:[ORDER BY {col_name | expr | position}