加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 如何使用rownum

发布时间:2021-03-07 09:50:20 所属栏目:MsSql教程 来源:网络整理
导读:参见英文答案 How to get second largest or third largest entry from a table12个 SELECTing top N rows without ROWNUM?5个 我在oracle中有一个员工表,名称,工资和其他详细信息. 我想获得第二高的薪水,但无法取得. 这一个工作正常 with e_salary as (se

参见英文答案 > How to get second largest or third largest entry from a table12个
> SELECTing top N rows without ROWNUM?5个
我在oracle中有一个员工表,名称,工资和其他详细信息.

我想获得第二高的薪水,但无法取得.

这一个工作正常

with e_salary as (select distinct salary from employee)
select salary from e_salary
order by salary desc

并给出输出:

450000

61000

60000

50000

40000

30000

20000

6000

但是,当我使用相同的查询来获取第二高的行没有得到任何输出

select salary
  from ( with e_salary as (select distinct salary from employee)
         select salary from e_salary order by salary desc)
 where rownum = 2

但是当我用rownum< 2替换rownum = 2时,它会给出前两个记录的输出.请有人解释为什么rownum = 2不起作用

解决方法

这将有效:

select salary from ( select salary,rownum as rn from (select salary
from e_salary order by salary desc)) where rn = 2;

为什么它不起作用:

将ROWNUM分配给某行时,Oracle从1开始,仅在选择行时增加该值;也就是说,当满足WHERE子句中的所有条件时.由于我们的条件要求ROWNUM大于2,因此不会选择任何行,并且ROWNUM永远不会超过1.

希望你现在很清楚.

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读