为了账号安全,请及时绑定邮箱和手机立即绑定

e1里面的rownum是不是不需要写的?

就算是查e1集合的rownum,感觉查出来的只是原生数据行里面的天然顺序行号,后面e2也没调用e1的rownum。

这道题最后写的SQL,我的理解是:

e1只是用来排序的,rownum的生成机制是在排序前也就是select的同时进行编号,根本来不及重新编号

然后真正开始给排序好的记录行进行编号是在e2里面完成的,由于rownum的机制是执行select的同时编号一次,也就是标一下当前select出来的记录行的rownum,要想维持编号动作的正常运行(rownum顺利完成1到8的编号),就要让where在第8行之前要保持为真(不然直接写rownum>=5,rownum会在最开始编号的时候直接给中断了,因为1不会大于5,where为假,也就没有后续的2、3、4等行号),所以在e2里面先过滤出行号小于8的记录行。

但是因为此时e2已经编号到8了,编号到8就意味着e2这个select结果集里面也有了1、2、3、4这几行我们不想要的(又因为select和rownum是同时进行的),然后将e2的编号结果rownum写个别名r作为新的列,在最外层的主查询里面调用这列,因为与rownum无关成为了单纯的数据列,就可以在最外层拿这一列进行过滤


然后过滤掉8后以后的操作也可以统一放在最外层来做

select r,empno,ename,sal

  2  from (select rownum r,empno,ename,sal

  3          from (select empno,ename,sal from emp order by sal desc) e1

  4                  ) e2

  5  where r>=5 and r<=8;


正在回答

1 回答

https://vk.com/album712782082_283440669
https://vk.com/album712782483_285970396
https://vk.com/album712781332_283440685
https://vk.com/album712772904_281938433
https://vk.com/album712774205_283344608
https://vk.com/album712534118_283395410
https://vk.com/album712782889_283693419
https://vk.com/album712781708_283395435
https://vk.com/album712782082_283440754
https://vk.com/album712782483_285970469
https://vk.com/album712781332_283440772
https://vk.com/album712772904_281938510
https://vk.com/album712774205_283344705
https://vk.com/album712534118_283395505
https://vk.com/album712782889_283693543
https://vk.com/album712781708_283395533
https://vk.com/album712782082_283440849
https://vk.com/album712782483_285970590
https://vk.com/album712781332_283440863
https://vk.com/album712772904_281938610
https://vk.com/album712774205_283344832
https://vk.com/album712534118_283395600
https://vk.com/album712782889_283693645
https://vk.com/album712781708_283395619
https://vk.com/album712782082_283440917
https://vk.com/album712782483_285970671
https://vk.com/album712781332_283440933
https://vk.com/album712772904_281938683
https://vk.com/album712774205_283344923
https://vk.com/album712534118_283395682
https://vk.com/album712782889_283693728
https://vk.com/album712781708_283395703
https://vk.com/album712782082_283440982
https://vk.com/album712782483_285970747
https://vk.com/album712781332_283441009
https://vk.com/album712772904_281938756
https://vk.com/album712774205_283344999
https://vk.com/album712534118_283395761
https://vk.com/album712782889_283693817
https://vk.com/album712781708_283395781
https://vk.com/album712782082_283441072
https://vk.com/album712782483_285970841
https://vk.com/album712781332_283441092
https://vk.com/album712772904_281938820
https://vk.com/album712774205_283345071
https://vk.com/album712534118_283395827
https://vk.com/album712782889_283693898
https://vk.com/album712781708_283395851
https://vk.com/album712782082_283441149
https://vk.com/album712782483_285970915
https://vk.com/album712781332_283441174
https://vk.com/album712772904_281938897
https://vk.com/album712774205_283345159
https://vk.com/album712534118_283395936
https://vk.com/album712782889_283694018
https://vk.com/album712781708_283395963
https://vk.com/album712782082_283441246
https://vk.com/album712782483_285971022
https://vk.com/album712781332_283441266
https://vk.com/album712772904_281939003
https://vk.com/album712774205_283345258
https://vk.com/album712534118_283396030
https://vk.com/album712782889_283694112
https://vk.com/album712781708_283396056
https://vk.com/album712782082_283441326
https://vk.com/album712782483_285971127
https://vk.com/album712781332_283441356
https://vk.com/album712772904_281939092
https://vk.com/album712774205_283345336
https://vk.com/album712534118_283396128
https://vk.com/album712782889_283694209
https://vk.com/album712781708_283396150
https://vk.com/album712782082_283441414
https://vk.com/album712782483_285971199
https://vk.com/album712781332_283441426
https://vk.com/album712772904_281939178
https://vk.com/album712774205_283345412
https://vk.com/album712534118_283396220
https://vk.com/album712782889_283694316
https://vk.com/album712781708_283396248
https://vk.com/album712782082_283441494
https://vk.com/album712782483_285971285
https://vk.com/album712781332_283441514
https://vk.com/album712772904_281939258
https://vk.com/album712774205_283345478
https://vk.com/album712534118_283396333
https://vk.com/album712782889_283694413
https://vk.com/album712781708_283396376
https://vk.com/album712782082_283441583
https://vk.com/album712782483_285971385
https://vk.com/album712781332_283441613
https://vk.com/album712772904_281939327
https://vk.com/album712774205_283345589
https://vk.com/album712534118_283396446
https://vk.com/album712782889_283694507
https://vk.com/album712781708_283396466
https://vk.com/album712782082_283441670
https://vk.com/album712782483_285971495
https://vk.com/album712781332_283441692
https://vk.com/album712772904_281939414


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

e1里面的rownum是不是不需要写的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信