一、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
