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;