oracle两表联查分页公式,Oracle中分页查询和联表查询

1.使用ROWNUM伪列查询

1.1.查询十条数据(rownum<=n)

SELECT ROWNUM,A.* FROM v_sjjx_unit_info A WHERE ROWNUM<=10

eb72052246977f35a8a0b649c89f411d.png

1.2.查询实体十条数据(between...and...)

SELECT * FROM v_sjjx_xsjbsjxx WHERE ROWNUM BETWEEN 0 AND 10

f093c1cecca2a4ae41f5af8a70359d19.png

1.3.查询第二到第十条数据

SELECT * FROM (SELECT b.*,ROWNUM r FROM v_sjjx_unit_info b WHERE ROWNUM <= 10) WHERE r >2

8623064e42f15159f958b4c96439294e.png

注:查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列。

1.4.两表联查,学生视图和学籍视图以学号为关联条件,查询两视图部分字段信息

SELECT * FROM

(SELECT ROWNUM RN,XZ.*

FROM (SELECT XS.XM,XJ.YXSH,XS.XH,XJ.ZYM,XS.XBM,XJ.SZNJ,XJ.XZ FROM v_sjjx_xsjbsjxx XS, v_sjjx_xjjbsjxx XJ WHERE XS.XH = XJ.XH ) XZ

WHERE ROWNUM<=10

) WHERE RN >(1-1)*10

f17eae37c50eef2ab36a4956c28f4cb7.png

2.分页查询另两种方法

2.1.使用MINUS(减去)方法   大减小

SELECT * FROM v_sjjx_unit_info WHERE ROWNUM<20 MINUS SELECT * FROM v_sjjx_unit_info WHERE ROWNUM<10

16719ecec7e342027d33f3021639d345.png

2.2.使用分析函数

SELECT * FROM(SELECT unit_id,unit_name,row_number()over(ORDER BY unit_id asc) rn FROM v_sjjx_unit_info) WHERE rn BETWEEN 10 AND 20

13eb2d3fdd340caf9a8e57a623915174.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值