多表数据分页查询在实际项目中会使用到。
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
就能够实现分页了。