MySQL和Oracle分頁的區別


一、MySQL使用limit分頁

select * from table_name limit m, n; // m = (startPage-1)*pageSize, n = pageSize

注:m是MySQL中數據行的起始下標,它從0開始

二、Oracle使用rownum分頁

select * from (
select rownum rn, a.* from (
select * from table_name order by XXX
) a
where ruwnum <= y // 結束行,y = startPage*pageSize
)
where rn > x; // 起始行,x = (startPage-1)*pageSize

注:rownum只能比較小於,不能比較大於,因為rownum是先查詢后排序的,例如你的條件為rownum>1,當查詢到第一條數據,rownum為1,則不符合條件。第2、3...類似,一直不符合條件,所以一直沒有返回結果。所以查詢的時候需要設置別名,然后查詢完成之后再通過調用別名進行大於的判斷。

或者也可以直接寫成

select * from (
select rownum rn, a.* from (
        select * from table_name order by XXX
    ) a
)
where rn > x and rn <= y;
// x = (startPage-1)*pageSize, y = startPage*pageSize

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM