oracle top分页有问题,Oracle-TOP-N和分页问题

SQL> --第一题 行号 rownum(伪列)

SQL> select rownum,empno,ename,sal

2 from emp;

ROWNUM EMPNO ENAME SAL

---------- ---------- ---------- -----

1 7369 SMITH 800

2 7499 ALLEN 1600

3 7521 WARD 1250

4 7566 JONES 2975

5 7654 MARTIN 1250

6 7698 BLAKE 2850

7 7782 CLARK 2450

8 7788 SCOTT 3000

9 7839 KING 5000

10 7844 TURNER 1500

11 7876 ADAMS 1100

ROWNUM EMPNO ENAME SAL

---------- ---------- ---------- -----

12 7900 JAMES 950

13 7902 FORD 3000

14 7934 MILLER 1300

已选择14行。

SQL> select rownum,empno,ename,sal

2 from emp

3 where rownum<=3

4 order by sal desc;

ROWNUM EMPNO ENAME SAL

---------- ---------- ---------- -----

2 7499 ALLEN 1600

3 7521 WARD 1250

1 7369 SMITH 800

SQL> /*

SQL> 注意的问题:

SQL> 1. 行号永远按照默认的顺序生成

SQL> 2. 行号只能使用< <=,不能使用> >=

SQL> */

SQL> select rownum,empno,ename,sal

2 from emp

3 order by sal desc;

ROWNUM EMPNO ENAME SAL

---------- ---------- ---------- -----

9 7839 KING 5000

13 7902 FORD 3000

8 7788 SCOTT 3000

4 7566 JONES 2975

6 7698 BLAKE 2850

7 7782 CLARK 2450

2 7499 ALLEN 1600

10 7844 TURNER 1500

14 7934 MILLER 1300

3 7521 WARD 1250

5 7654 MARTIN 1250

ROWNUM EMPNO ENAME SAL

---------- ---------- ---------- -----

11 7876 ADAMS 1100

12 7900 JAMES 950

1 7369 SMITH 800

已选择14行。

SQL> select rownum,empno,ename,sal

2 from emp

3 where rownum>=5 and rownum<=8;

未选定行

SQL> --rownum永远从1开始

分页

SQL> --第一题

SQL> select rownum,empno,ename,sal

2 from (select * from emp order by sal desc)

3 where rownum<=3;

ROWNUM EMPNO ENAME SAL

---------- ---------- ---------- -----

1 7839 KING 5000

2 7788 SCOTT 3000

3 7902 FORD 3000

SQL> select *

2 from (select rownum r,e1.*

3 from (select * from emp order by sal) e1

4 where rownum <=8

5 )

6 where r >=5;

R EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

---------- ---------- ---------- --------- ---------- -------------- ----- ---------- ----------

5 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30

6 7934 MILLER CLERK 7782 23-1月 -82 1300 10

7 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30

8 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30

SQL> --第二题

SQL> select empno,ename,sal,avgsal

2 from emp e, (select deptno,avg(sal) avgsal from emp group by deptno) d

3 where e.deptno=d.deptno and e.sal>d.avgsal;

SQL> --相关子查询

SQL> -- : 将主查询中的某个值作为参数传递给子查询

SQL> select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal

2 from emp e

3 where sal > (select avg(sal) from emp where deptno=e.deptno);

EMPNO ENAME SAL AVGSAL

---------- ---------- ----- ----------

7499 ALLEN 1600 1566.66667

7566 JONES 2975 2175

7698 BLAKE 2850 1566.66667

7788 SCOTT 3000 2175

7839 KING 5000 2916.66667

7902 FORD 3000 2175

已选择6行。

行转列函数

SQL> --wm_concat 行转列 (组函数)

SQL> select deptno,wm_concat(ename) names

2 from emp

3 group by deptno;

DEPTNO NAMES

------ --------------------------------------------------

10 CLARK,KING,MILLER

20 SMITH,FORD,ADAMS,SCOTT,JONES

30 ALLEN,BLAKE,MARTIN,TURNER,JAMES,WARD

SQL> select count(*) Total,sum(decode(to_char(hiredate,'yyyy'),'1980',1,0)) "1980",

2 sum(decode(to_char(hiredate,'yyyy'),'1981',1,0)) "1981",

3 sum(decode(to_char(hiredate,'yyyy'),'1982',1,0)) "1982",

4 sum(decode(to_char(hiredate,'yyyy'),'1987',1,0)) "1987"

5 from emp;

TOTAL 1980 1981 1982 1987

---------- ---------- ---------- ---------- ----------

14 1 10 1 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于使用mybatis-plus和oracle进行分页的问题,您可以参考以下步骤: 1. 在pom.xml文件中添加mybatis-plus和oracle的依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.4.3</version> </dependency> <dependency> <groupId>com.oracle.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>19.3.0.0</version> </dependency> ``` 2. 在配置文件中配置mybatis-plus的分页插件: ```yaml mybatis-plus: mapper-locations: classpath*:mapper/*Mapper.xml global-config: db-config: id-type: auto table-capital: true column-capital: false logic-delete-value: 1 logic-not-delete-value: 0 logic-delete-field: delete_flag pageSize: 10 # 每页大小 page: 1 # 当前页 overflow: true # 是否溢出,如果为true,则返回最后一页,如果为false,则返回第一页 limit: 100 #最大分页限制 configuration: map-underscore-to-camel-case: true cache-enabled: false log-impl: org.apache.ibatis.logging.stdout.StdOutImpl plugins: - component: com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor ``` 3. 在mapper接口中定义查询方法,并且使用Page对象保存分页参数: ```java public interface UserMapper extends BaseMapper<User> { List<User> selectUserList(Page<User> page, @Param("search") String search); } ``` 4. 在service层中调用mapper接口的方法,同时传入页码和每页大小的参数: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public IPage<User> selectUserList(Page<User> page, String search) { return userMapper.selectUserList(page, search); } } ``` 使用以上方法可以轻松实现mybatis-plus和oracle的分页功能,希望对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值