使用MySql,我可以对列进行排序但是最后有0吗?

时间:2010-06-28 05:13:11

标签: sql mysql sql-order-by

我想按一列升序排序,但我希望0来最后。无论如何在MySql中执行此操作?

4 个答案:

答案 0 :(得分:95)

您可能需要尝试以下操作:

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 :(得分:1)

您可以执行以下操作:

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

空值将低于列表。

答案 2 :(得分:0)

以下查询应该可以解决问题。

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

答案 3 :(得分:0)

SELECT * FROM your_table ORDER BY 0.1/your_field;