我有下表'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
答案 0 :(得分:2)
我将在此处使用CASE
表达式:
SELECT *
FROM client
ORDER BY
CASE WHEN filecount IS NOT NULL THEN 0 ELSE 1 END,
ID DESC;
答案 1 :(得分:1)
您可以先按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