2016-11-18 53 views

回答

1

您可以使用IF语句来执行您的逻辑,然后将空值置于底部。在列名之前放置一个减号( - )以对空值进行分类。

测试用例:

CREATE TABLE mytable (a int); 

INSERT INTO mytable VALUES (NULL); 
INSERT INTO mytable VALUES (NULL); 
INSERT INTO mytable VALUES (NULL); 
INSERT INTO mytable VALUES (0); 
INSERT INTO mytable VALUES (0); 
INSERT INTO mytable VALUES (0); 
INSERT INTO mytable VALUES (1); 
INSERT INTO mytable VALUES (2); 
INSERT INTO mytable VALUES (3); 
INSERT INTO mytable VALUES (4); 
INSERT INTO mytable VALUES (5); 

结果

SELECT *, IF (a = 0 OR a = NULL, NULL, a) as sort_order 
FROM mytable 
ORDER BY -sort_order DESC 
+------+ 
| a | 
+------+ 
| 1 | 
| 2 | 
| 3 | 
| 4 | 
| 5 | 
| 0 | 
| 0 | 
| 0 | 
| NULL | 
| NULL | 
| NULL | 
+------+ 

http://sqlfiddle.com/#!9/58b399/14