赞
踩
ROWNUM的使用场景:
场景:查询主键不重复的所有数据
- SELECT *
- FROM (
- SELECT TQ.*,ROWNUM R FROM T_QUERY TQ
- WHERE TQ.PHONETYPE = 'IPHONE'
- )
- WHERE R >= 1
- AND R <=10
个人理解:
首先是在原表的数据中加入临时字段ROWNUM,相当于按数据顺序排上编号
ID | ROWNUM |
20230202 | 1 |
20220506 | 2 |
20220101 | 3 |
where判断条件中的1和10大家可以用占位符传入自己想要展示的数据的区间。
使用:用于where条件中
优点:上手快,不复杂
缺点:性能较低,数据量大的话会导致前端页面接受资源过多页面崩溃
OFFSET和FETCH的使用场景:
场景:更适用于查询大量数据且有重复的数据,当然也可以查其它类型的数据
SELECT * FROM T_QUERY ORDER BY TQ_COLUMN OFFSET 0 ROWS FETCH NEXT 10 ROMS ONLY;
个人理解:
该方法适用于直接查询某个范围后多少数据
OFFSET 0 代表从0后面的一位开始计算也就是1 ,sql的0 和 10取得的结果就是1~10
使用:用于select条件中
优点:上手快,容易掌握
缺点:在Oracle 12 及以上才可以用
ROW_NUMBER()OVER()使用场景:
场景:各种不同的分页场景
- SELECT * FROM
- (
- SELECT TQ.*,ROW_NUMBER() OVER (ORDER BY TQ_COLUMN) R FROM T_QUERY TQ
- )
- WHERE R BETWEEN 1 AND 10
个人理解:
该方法适用于直接查询某个范围区间的数据
对TQ_QUERY表的 TQ_COLUMN列进行排序,取出1~10的数据返回
使用:用于select条件中
优点:更加灵活
缺点:语法复杂,不利于理解
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。