限制和抵消關係

考慮以下 users 表:

ID 使用者名稱
1 使用者 1
2 使用者 2
3 使用者 3
4 使用者 4
使用者 5

為了約束 SELECT 查詢的結果集中的行數,LIMIT 子句可以與一個或兩個正整數一起用作引數(包括零)。

LIMIT 子句有一個引數

使用一個引數時,結果集將僅限制為以下列方式指定的數字:

SELECT * FROM users ORDER BY id ASC LIMIT 2
ID 使用者名稱
1 使用者 1
2 使用者 2

如果引數的值為 0,則結果集將為空。

另請注意,ORDER BY 子句可能很重要,以指定將呈現的結果集的第一行(當由另一列排序時)。

LIMITclause 有兩個引數

當在 LIMIT 子句中使用兩個引數時:

  • 一個參數列示將從中顯示結果集行的行 - 此數字通常被稱為偏移量,因為它表示受約束結果集的初始行之前的行。這允許引數接收 0 作為值,從而考慮非約束結果集的第一行。
  • 第二引數指定在結果集中(類似於一個引數的例子)將被返回的最大行數。

因此查詢:

SELECT * FROM users ORDER BY id ASC LIMIT 2, 3

提供以下結果集:

ID 使用者名稱
3 使用者 3
4 使用者 4
使用者 5

請注意,當 offset 引數為 0 時,結果集將等同於一個引數 LIMIT 子句。這意味著以下 2 個查詢:

SELECT * FROM users ORDER BY id ASC LIMIT 0, 2

SELECT * FROM users ORDER BY id ASC LIMIT 2

生成相同的結果集:

ID 使用者名稱
1 使用者 1
2 使用者 2

OFFSET 關鍵字:替代語法

具有兩個引數的 LIMIT 子句的替代語法包括在第一個引數之後使用 OFFSET 關鍵字,方式如下:

SELECT * FROM users ORDER BY id ASC LIMIT 2 OFFSET 3

此查詢將返回以下結果集:

ID 使用者名稱
3 使用者 3
4 使用者 4

請注意,在此替代語法中,引數的位置已切換:

  • 一個參數列示結果集中要返回的行數;

  • 第二參數列示偏移。