多表數據分頁查詢在實際項目中會使用到。
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
就能夠實現分頁了。