如何查询..(订购一个字段并将具有空值的行放在最后)

时间:2016-01-12 20:29:52

标签: mysql sql syntax

我的这个表名为sample,有3列:idkidshobby

记录:

1, John
2, Jacob, Computer Games
3, Joe, Swimming
4, Joan, Basketball
5, Jose

很明显,John和Jose在字段hobby中有空值 我要查询的是要显示的记录(当排序字段hobby ASC时) 应该是:

4, Joan, Basketball
2, Jacob, Computer Games
3, Joe, Swimming
1, John
5, Jose

(我有代码,我点击一个sigle按钮,查询顺序上升然后下降,反之亦然每次点击) 如果我想下降,我希望记录显示:

3, Joe, Swimming
2, Jacob, Computer Games
4, Joan, Basketball
1, John
5, Jose

我想知道正确的ORDER BY语法。 我的问题清楚了吗?希望如此。请帮助:)

2 个答案:

答案 0 :(得分:0)

数据库不会关注订单中的NULL值,因此您可以这样做以实现所需的输出。

SELECT id, kids, hobby
WHERE hobby IS NOT NULL
ORDER BY hobby
UNION
SELECT id, kids, hobby
WHERE hobby IS NULL

答案 1 :(得分:0)

在MySQL上你也可以使用: ORDER BY hobby IS NULL, hobbyORDER BY hobby IS NULL, hobby DESC

你也可以使用case语句(这是一个标准的SQL语句): ORDER BY case when hobby is null then 1 else 0 end, hobbyORDER BY case when hobby is null then 1 else 0 end, hobby DESC

这种方式首先过滤非空,然后是业余爱好