如何限制PostgreSQL SELECT中的行

Dan*_*rtz 41 sql postgresql sql-limit

什么相当于PostgreSQL中的SQL Server TOP或DB2 FETCH FIRST或mySQL LIMIT

Sin*_*our 66

您可以像在MySQL中一样使用LIMIT,例如:

SELECT * FROM users LIMIT 5;
Run Code Online (Sandbox Code Playgroud)


mon*_*top 16

您可以随时添加OFFSET子句和LIMIT子句.

您可能需要从特定偏移量中选取一组记录.这是一个从第3个位置开始获取3条记录的示例:

testdb=# SELECT * FROM COMPANY LIMIT 3 OFFSET 2;
Run Code Online (Sandbox Code Playgroud)

这将产生以下结果:

 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
Run Code Online (Sandbox Code Playgroud)

完整的解释和更多示例在这里查看

  • 使用LIMIT时,使用ORDER BY子句将结果行限制为唯一顺序非常重要.否则,您将获得查询行的不可预测的子集(来自文档). (3认同)

Vla*_*cea 11

在 PostgreSQL 上,有两种方法可以实现这个目标。

SQL标准

第一个选项是使用 SQL:2008 标准方法来限制使用以下FETCH FIRST N ROWS ONLY语法的结果集:

SELECT
    title
FROM
    post
ORDER BY
    id DESC
FETCH FIRST 50 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

自 PostgreSQL 8.4 起支持 SQL:2008 标准语法。

PostgreSQL 8.3 或更高版本

对于 PostgreSQL 8.3 或更早版本,您需要 LIMIT 子句来限制结果集大小:

SELECT
    title
FROM
    post
ORDER BY
    id DESC
LIMIT 50
Run Code Online (Sandbox Code Playgroud)


Hos*_*Aly 5

使用LIMIT子句。


Sar*_*ath 5

除了限制之外,您还可以使用 Fetch First。你的问题已经有了答案

Select * from users FETCH FIRST 5 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)