如何在PostgreSQL SELECT中限制行

luaexgnf  于 2023-04-20  发布在  PostgreSQL
关注(0)|答案(6)|浏览(302)

PostgreSQL中的SQL Server的TOP或DB2的FETCH FIRST或mySQL的LIMIT的等价物是什么?

mklgxw1f

mklgxw1f1#

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

SELECT * FROM users LIMIT 5;
pkwftd7m

pkwftd7m2#

您始终可以将OFFSET子句与LIMIT子句沿着添加。
您可能需要从特定的偏移量中提取一组记录。下面是一个从第三个位置开始提取3条记录的示例:

testdb=# SELECT * FROM COMPANY LIMIT 3 OFFSET 2;

这将产生以下结果:

id | name  | age | address   | salary
----+-------+-----+-----------+--------
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000

完整的解释和更多的例子检查HERE

y4ekin9u

y4ekin9u3#

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

SQL标准

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

SELECT
    title
FROM
    post
ORDER BY
    id DESC
FETCH FIRST 50 ROWS ONLY

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

PostgreSQL 8.3及以上版本

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

SELECT
    title
FROM
    post
ORDER BY
    id DESC
LIMIT 50
cmssoen2

cmssoen24#

使用LIMIT子句或FETCH FIRST 10 ROWS

68de4m5k

68de4m5k5#

除了限制,你也可以使用先取。你的问题已经有答案了

Select * from users FETCH FIRST 5 ROWS ONLY
dfuffjeb

dfuffjeb6#

例如,如果你想从一个按排名列排序的表中选择10个跳过前3名的学生(因此获取排名4到13的学生),你可以用途:
SELECT * FROM STUDENTS ORDER BY rank asc LIMIT 10 OFFSET 3;
如果你只想要前10名,你可以省略OFFSET:SELECT * FROM STUDENTS ORDER BY rank asc LIMIT 10;

相关问题