在 PostgreSQL 中,与 SQL Server 的 TOP
、DB2 的 FETCH FIRST
或 MySQL 的 LIMIT
相当的语句是什么?
在 PostgreSQL 中,与 SQL Server 的 TOP
、DB2 的 FETCH FIRST
或 MySQL 的 LIMIT
相当的语句是什么?
您可以像在 MySQL 中一样使用LIMIT,例如:
SELECT * FROM users LIMIT 5;
你总是可以在LIMIT
子句中添加OFFSET
子句。
你可能需要从特定的偏移量中获取一组记录。以下是一个示例,它从第三个位置开始选择了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
更详细的解释和更多示例请查看此处
在PostgreSQL中,有两种方法可以实现这个目标。
第一种选择是使用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或更早的版本,您需要使用LIMIT子句来限制结果集大小:
SELECT
title
FROM
post
ORDER BY
id DESC
LIMIT 50
Select * from users FETCH FIRST 5 ROWS ONLY
如果你想选择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;