如何解决如何按两列之一排序查询结果,最后一列为空
我有下表'client'
ID|name|filecount
----------------------
1 Jim 7
2 Jane null
3 Mike 18
4 Jeff 12
5 Ann null
6 Helen 22
我想从该表ordered by ID Desc
中获取所有行,并在列filecount
中最后排空。
所以排序后,我想得到以下顺序:
ID|name |filecount
----------------------
6 Helen 22
4 Jeff 12
3 Mike 18
1 Jim 7
5 Ann null
2 Jane null
我尝试了以下操作,但不起作用:
Select * from client order by id desc,(filecount > 0) nulls last
解决方法
我将在此处使用CASE
表达式:
SELECT *
FROM client
ORDER BY
CASE WHEN filecount IS NOT NULL THEN 0 ELSE 1 END,ID DESC;
Demo
,
您可以先按filecount
进行排序,仅区分0和非0值,然后再按ID
进行排序:
select *
from client
order by case
when filecount <> 0 then 0
else 1
end,ID desc
P.S .:不是null
,而是零。如果它们应为null
,则更改此行:
when filecount <> 0 then 0
收件人:
when filecount is not null then 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。