我想知道是否可以限制SQL请求的结果?
例如,只从中返回最多50行:
例如,只从中返回最多50行:
SELECT * FROM <table>
谢谢。
SQL:2008标准提供以下语法来限制SQL结果集:
SELECT
title
FROM
post
ORDER BY
id DESC
FETCH FIRST 50 ROWS ONLY
SQL:2008的Top-N记录子句自Oracle 12c、SQL Server 2012和PostgreSQL 8.4起得到支持。
虽然SQL Server支持SQL:2008的Top-N标准语法,但你还需要提供OFFSET子句:
SELECT
title
FROM
post
ORDER BY
id DESC
OFFSET 0 ROWS
FETCH FIRST 50 ROWS ONLY
在旧版的SQL Server中,您可以使用TOP:
SELECT TOP 50
title
FROM
post
ORDER BY
id DESC
在12c版本之前,要获取Top-N记录,必须使用派生表和ROWNUM伪列:
SELECT *
FROM (
SELECT
title
FROM
post
ORDER BY
id DESC
)
WHERE ROWNUM <= 50
传统上,MySQL和PostgreSQL使用LIMIT子句将结果集限制为前N条记录:
SELECT
title
FROM
post
ORDER BY
id DESC
LIMIT 50
是的,这是可能的。这取决于数据库引擎。
Postgres:
SELECT * FROM <table> LIMIT 50
SQL Server:
SELECT TOP 50 * FROM <table>
SELECT * FROM tbl LIMIT 5,10; #检索6-15行
要检索从某个偏移量到结果集结尾的所有行,可以对第二个参数使用一些大数字。该语句检索从第96行到最后一行的所有行:
SELECT * FROM tbl LIMIT 95,18446744073709551615;
有一个参数时,该值指定要从结果集开头返回的行数:
SELECT * FROM tbl LIMIT 5; #检索前5行
换句话说,"LIMIT row_count"等价于"LIMIT 0,row_count"。
select * from <table> where rownum <= 50;
翻译:从表格中选择所有行,其中行号不超过50。 - river0