类别:

查询语法

LIMIT / FETCH

约束语句或子查询返回的最大行数。LIMIT (Postgres 语法)和 FETCH (ANSI 语法)都受支持,并产生相同的结果。

另请参阅:

TOP <n>

语法

-- Postgres syntax
SELECT ...
FROM ...
[ ORDER BY ... ]
LIMIT <count> [ OFFSET <start> ]
[ ... ]

-- ANSI syntax
SELECT ...
FROM ...
[ ORDER BY ... ]
[ OFFSET <start> ] [ { ROW | ROWS } ] FETCH [ { FIRST | NEXT } ] <count> [ { ROW | ROWS } ] [ ONLY ]
[ ... ]
Copy

使用说明

  • ORDER BY 子句不是必需的;但是,如果没有 ORDER BY 子句,结果是不确定的,因为结果集中的结果不一定按任何特定顺序排列。要控制返回的结果,请使用 ORDER BY 子句。

  • countstart 必须是非负整数常量。

    • count 指定返回的行数。

      也接受值 NULL、空字符串 ('') 和 $$$$ 并将其视为“无限制”;如果连接器和驱动程序(如 JDBC 驱动程序)在将参数动态绑定到语句时收到不完整的参数列表,这主要对它们有用。

    • OFFSET start 可以选择指定行数,在此之后返回受限/提取的行。如果 OFFSET 省略,则输出从结果集中的第一行开始。

      也接受值 NULL、空字符串 ('') 和 $$$$ 并将其视为 0(即不跳过任何行);如果连接器和驱动程序(如 JDBC 驱动程序)在将参数动态绑定到语句时收到不完整的参数列表,这主要对它们有用。

  • ONLY 此可选关键字不会影响输出。它只是为了强调给人类读者。

  • TOP <n>LIMIT <count> 等效。

示例

以下示例演示了 LIMIT 的效果。为了简单起见,这些查询省略了 ORDER BY 子句,并假设输出顺序始终与第一个查询所示的顺序相同。** 实际查询应该包含 ORDER BY。**

select c1 from testtable;

+------+
|   C1 |
|------|
|    1 |
|    2 |
|    3 |
|   20 |
|   19 |
|   18 |
|    1 |
|    2 |
|    3 |
|    4 |
| NULL |
|   30 |
| NULL |
+------+

select c1 from testtable limit 3 offset 3;

+----+
| C1 |
|----|
| 20 |
| 19 |
| 18 |
+----+

select c1 from testtable order by c1;

+------+
|   C1 |
|------|
|    1 |
|    1 |
|    2 |
|    2 |
|    3 |
|    3 |
|    4 |
|   18 |
|   19 |
|   20 |
|   30 |
| NULL |
| NULL |
+------+

select c1 from testtable order by c1 limit 3 offset 3;

+----+
| ID |
|----|
|  2 |
|  3 |
|  3 |
+----+
Copy

下面的示例演示如何使用 NULLs 来指示

  • 行数没有限制。

  • 从第 1 行开始(不要跳过任何行)

    CREATE TABLE demo1 (i INTEGER);
    INSERT INTO demo1 (i) VALUES (1), (2);
    
    Copy
    SELECT * FROM demo1 ORDER BY i LIMIT NULL OFFSET NULL;
    +---+
    | I |
    |---|
    | 1 |
    | 2 |
    +---+
    
    Copy
    SELECT * FROM demo1 ORDER BY i LIMIT '' OFFSET '';
    +---+
    | I |
    |---|
    | 1 |
    | 2 |
    +---+
    
    Copy
    SELECT * FROM demo1 ORDER BY i LIMIT $$$$ OFFSET $$$$;
    +---+
    | I |
    |---|
    | 1 |
    | 2 |
    +---+
    
    Copy
语言: 中文