如何按两列对查询结果进行排序,其中一列最后为空值
How to order a query result by two columns with nulls last in one of the columns
我有以下table'client'
ID|name|filecount
----------------------
1 Jim 7
2 Jane null
3 Mike 18
4 Jeff 12
5 Ann null
6 Helen 22
我想从此 table 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
您可以先按 filecount
排序,仅区分 0 值和非 0 值,然后再按 ID
:
select *
from client
order by case
when filecount <> 0 then 0
else 1
end, ID desc
P.S.: 那些不是 null
s,那些是零。如果它们应该是 null
s,则更改此行:
when filecount <> 0 then 0
至:
when filecount is not null then 0
我会在这里使用 CASE
表达式:
SELECT *
FROM client
ORDER BY
CASE WHEN filecount IS NOT NULL THEN 0 ELSE 1 END,
ID DESC;
我有以下table'client'
ID|name|filecount
----------------------
1 Jim 7
2 Jane null
3 Mike 18
4 Jeff 12
5 Ann null
6 Helen 22
我想从此 table 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
您可以先按 filecount
排序,仅区分 0 值和非 0 值,然后再按 ID
:
select *
from client
order by case
when filecount <> 0 then 0
else 1
end, ID desc
P.S.: 那些不是 null
s,那些是零。如果它们应该是 null
s,则更改此行:
when filecount <> 0 then 0
至:
when filecount is not null then 0
我会在这里使用 CASE
表达式:
SELECT *
FROM client
ORDER BY
CASE WHEN filecount IS NOT NULL THEN 0 ELSE 1 END,
ID DESC;