我的这个表名为sample
,有3列:id
,kids
和hobby
记录:
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
语法。
我的问题清楚了吗?希望如此。请帮助:)
答案 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, hobby
或ORDER BY hobby IS NULL, hobby DESC
你也可以使用case语句(这是一个标准的SQL语句):
ORDER BY case when hobby is null then 1 else 0 end, hobby
或ORDER BY case when hobby is null then 1 else 0 end, hobby DESC
这种方式首先过滤非空,然后是业余爱好