多表数据分页查询

多表数据分页查询在实际项目中会使用到。

SELECT * FROM (
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO,ROWNUM NOM FROM EMP
UNION
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO,ROWNUM NOM FROM EMP_ZYQ
)

这种写法的运行结果,最后按照ROWNUM 进行排序显示如下:

 

 我们可以看到 ROWNUM 中有重复的1 和 重复的2 等等。

可见使用这种方式进行分页显然是不行的。

 

那么应该怎样做,想法是,将两张表中的数据都查询出来之后,再进行总的分页。

如下

SELECT A.*,ROWNUM NOM FROM (
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP
UNION
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP_ZYQ
) A

这种写法的运行结果,最后按照ROWNUM 进行排序显示如下:

 

 

对上面的sql 进行一下优化:

SELECT A.*,ROWNUM FROM (
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP
UNION
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP_ZYQ
) A
WHERE ROWNUM BETWEEN 1 AND 100

就能够实现分页了。

 

posted on 2021-10-12 09:27  ~码铃薯~  阅读(1807)  评论(0)    收藏  举报

导航