sql rank 显示请求的排名号
sql rank diplay requested rank number
查询:
SELECT distinct
rank() OVER (ORDER BY p.service) as rank,
p.service,
From table_service
Where 1=1
输出:
Rank:1 |服务:test1
Rank:2 |服务:test2
Rank:3 |服务:test3
如何只显示排名 2?
我试过了但是没有用:
SELECT distinct
rank() OVER (ORDER BY p.service) as rank,
p.service,
From table_service
Where rank = 2
有什么想法吗?
你可以尝试使用子查询,因为where
不能使用别名做条件
SELECT * FROM (
SELECT
rank() OVER (ORDER BY p.service) as rank,
p.service,
From table_service
) t1
where rank = 2
将您的查询放入子查询中:
select *
from
(
SELECT distinct
rank() OVER (ORDER BY p.service) as rank,
p.service,
From table_service
) sub
Where rank = 2;
为什么要使用排名?大多数数据库支持 offset/fetch
或类似的东西:
select p.service,
from table_service p
order by p.service
offset 1 fetch first 1 row only;
查询:
SELECT distinct
rank() OVER (ORDER BY p.service) as rank,
p.service,
From table_service
Where 1=1
输出:
Rank:1 |服务:test1
Rank:2 |服务:test2
Rank:3 |服务:test3
如何只显示排名 2?
我试过了但是没有用:
SELECT distinct
rank() OVER (ORDER BY p.service) as rank,
p.service,
From table_service
Where rank = 2
有什么想法吗?
你可以尝试使用子查询,因为where
不能使用别名做条件
SELECT * FROM (
SELECT
rank() OVER (ORDER BY p.service) as rank,
p.service,
From table_service
) t1
where rank = 2
将您的查询放入子查询中:
select *
from
(
SELECT distinct
rank() OVER (ORDER BY p.service) as rank,
p.service,
From table_service
) sub
Where rank = 2;
为什么要使用排名?大多数数据库支持 offset/fetch
或类似的东西:
select p.service,
from table_service p
order by p.service
offset 1 fetch first 1 row only;