取出sql表中第31到40的記錄(以自動增長id為主鍵)
sql server方案1:
select top 10 * from t where id not in (select top 30 id from t order by id ) orde by id
sql server方案2:
select top 10 * from t where id in (select top 40 id from t order by id) order by id desc
mysql方案:select * from t order by id limit 30,10
oracle
方案:
select * from
(select a.*, rownum rn
from (select * from table_name) a
where rownum <= 40
)where rn >= 21
1.分頁技術1
(直接利用sql
語句進行分頁,效率最高和最推薦的)
mysql:sql = "select * from articles limit " + (pageno-1)*pagesize + "," + pagesize;
oracle: sql = "select * from " +
"(select rownum r,* from " +
"(select * from articles order by postime desc)" +
"where rownum<= " + pageno*pagesize +") tmp " +
"where r>" + (pageno-1)*pagesize;
注釋:第7
行保證rownum
的順序是確定的,因為oracle
的索引會造成rownum
返回不同的值
時,rownum
按順序輸出,一旦有了order by
,rownum
不按順序輸出了,這說明rownum
是排序前的編號。如果對order by
從句中的字段建立了索引,那麼,rownum
也是按順序輸出的,因為這時候生成原始的查詢結果集時會參照索引表的順序來構建。
sqlserver:sql = "select top 10 * from id not id(select top " + (pageno-1)*pagesize + "id from articles)"
資料庫分頁語句
1 mysql select from tb user order by id asc limit 10 offset 10 size small color blue limit指定每頁大小,offset指定偏移量,在程式 中可以寫成這樣 select from tb user order by ...
JDBC 資料庫分頁語句
在編寫web應用程式等系統時,會涉及到與資料庫的互動,如果資料庫中資料量很大的話,一次檢索所有的記錄,會占用系統很大的資源,因此常常採用分頁語句 需要多少資料就只從資料庫中取多少條記錄。以下是 sqlserver,oracle 和mysql 的分頁語句 從資料庫表中的第 m條資料開始取 n條記錄 m...
常用資料庫分頁語句
select from cat limit select from cat limit 20000,100 從cat表中第20000條開始取出100條記錄,即記錄號為20000到20099的記錄 select from cat limit select from cat limit 100 從cat...