我有一个MySQL表,其中包含许多产品。我想要做的是按一个特定列对表进行排序(大多数值以数字开头,例如:1st,2nd)等等。但是,由于某些记录没有此列的值,所以当我尝试排序时,表格自动将空行放在第一位。
我正在寻找一种方法来对行ASCENDING进行排序,但只在有序记录的末尾插入空白记录,如果这有意义的话?
非常感谢任何帮助!
答案 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 |