1. 程式人生 > >Mysql和Oracle中的分頁機制各是什麼?

Mysql和Oracle中的分頁機制各是什麼?

mysql和oracle的分頁機制分別是什麼呢?每次面試都會被問到,總結一下啊,分享一下啊!!!!

1.MySql中的limit關鍵字

以模糊查詢為例子,limit寫到where子句的後面

select * from user where name like '%mm%' limit startrow,readsize;

其中值得推敲的是startrow和readsize也就是開始和讀取的記錄數

這樣查詢出來的結果集是從startrow行,讀取endsize條記錄,實際上查詢到的結果集是startrow+1到startrow+readsize的結果,這是操作中我們應該注意的,結果集不包括startrow.

2.Oracle中的rownum關鍵字

select name,email from (select rownum rn ,name ,email  from user  where rownum <endrow) t where t.rn>=sartrow

這樣我們就可以得到startrow到endrow結果集,注意結果集合不包括endrow當前行記錄,如果條件子句中不是>=startrow,那麼查詢到的結果集是也不包括startrow當前行記錄。

Oracle中主要用到rownum這個偽欄位,子查詢得到的記錄集包括了一個rownum欄位,由於Oracle中rownum欄位都是從1開始遞增的,查詢到幾條記錄就遞增到幾,所以我們應從後向前擷取要查詢的記錄,並將rownum固定為結果集合的一個欄位,然後再使用外層查詢就可以以結果集的rownum固定住的欄位來利用where子句來操縱記錄了。