在 Oracle 查詢中直接加上 AND rn > 0 AND rn <= 10 查不出資料,刪除後可查出。
ROWNUM 是在查詢結果產生時就分配編號,若在外層直接過濾 ROWNUM > 1,第一筆資料就會被過濾,導致後續資料也無法正確編號。
SELECT * FROM (
SELECT ROWNUM rn, buyPlanNo, ... FROM g3_buyplan WHERE 1=1
) buyplan
WHERE rn > 0 AND rn <= 10
將完整查詢包成子查詢,再在外層對 rn 進行分頁過濾。