首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

三大主流資料庫分頁查詢語法全攻略:SQL Server、Oracle、MySQL

     編輯:關於SqlServer

開發 MIS 或 Web 應用時,面對大量資料不可一次撈取所有記錄,需採用分頁查詢。本文整理 SQL Server、Oracle、MySQL 三大資料庫最常用的分頁語法,以「從第 M 筆開始取 N 筆」為例說明。

SQL Server(利用 TOP 巢狀查詢)

SELECT *
FROM (
  SELECT TOP N *
  FROM (
    SELECT TOP (M + N - 1) * FROM 資料表 ORDER BY 主鍵 DESC
  ) t1
) t2
ORDER BY 主鍵 ASC

範例: 從 Sys_option(主鍵 sys_id)第 10 筆起取 20 筆:

SELECT *
FROM (
  SELECT TOP 20 *
  FROM (
    SELECT TOP 29 * FROM Sys_option ORDER BY sys_id DESC
  ) t1
) t2
ORDER BY sys_id ASC

Oracle(利用 ROWNUM 偽欄位)

SELECT *
FROM (
  SELECT ROWNUM r, t1.* FROM 資料表 t1 WHERE ROWNUM < M + N
) t2
WHERE t2.r >= M

範例: 同樣從第 10 筆取 20 筆:

SELECT *
FROM (
  SELECT ROWNUM R, t1.* FROM Sys_option WHERE ROWNUM < 30
) t2
WHERE t2.R >= 10

MySQL(最簡單,原生 LIMIT)

SELECT * FROM 資料表 LIMIT M, N

範例:

SELECT * FROM sys_option LIMIT 10, 20

快速比較表

資料庫關鍵字語法複雜度適用版本
SQL ServerTOP 巢狀較高2000/2005/2008+
OracleROWNUM中等8i/9i/10g/11g+
MySQLLIMIT最低3.23+

實務上建議搭配 ORDER BY 確保分頁順序穩定;SQL Server 2012+ 可直接使用 OFFSET ... FETCH 簡化語法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved