MySQL:按字段排序,将空单元格放在最后

时间:2011-04-28 22:32:51

标签: mysql sorting

我有一个MySQL表,其中包含许多产品。我想要做的是按一个特定列对表进行排序(大多数值以数字开头,例如:1st,2nd)等等。但是,由于某些记录没有此列的值,所以当我尝试排序时,表格自动将空行放在第一位。

我正在寻找一种方法来对行ASCENDING进行排序,但只在有序记录的末尾插入空白记录,如果这有意义的话?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:71)

select * from table
order by if(field = '' or field is null,1,0),field

答案 1 :(得分:3)

这是最有效的方法之一

ASC订单

SELECT * FROM user ORDER BY name IS NULL, name ASC

预期结果:

+----+--------+------------+
| id |  name  | date_login |
+----+--------+------------+
|  3 |  david | 2016-12-24 |
|  2 |  john  | NULL       |
|  4 |  zayne | 2017-03-02 |
|  1 |  NULL  | 2017-03-12 |

DESC订单

SELECT * FROM user ORDER BY name IS NULL, name DESC

预期结果:

+----+--------+------------+
| id |  name  | date_login |
+----+--------+------------+
|  4 |  zayne | 2017-03-02 |
|  2 |  john  | NULL       |
|  3 |  david | 2016-12-24 |
|  1 |  NULL  | 2017-03-12 |