例如,在SQL查询中,如何从行号10到50中选择特定数量的行。
SELECT top 15000 [ID]....
将获得前 15000 行,但如果我想获得下一个 15000 行,我会怎么做?
MySQL的语法是
SELECT * FROM table LIMIT numberOfRowsToSkip, numberOfRowsToSelect
所以在你的情况下:
SELECT * FROM table LIMIT 9, 41; --selects from row no. 10 to no. 50
SELECT * FROM table LIMIT 15000, 15000; --selects from 15001st row, next 15000 rows
有关参考,请访问MySQL SELECT文档。菲利普为此提供了另一种语法。
对于 SQL Server,请参阅此处。
SELECT *
FROM
(
SELECT
ROW_NUMBER() OVER (ORDER BY ID),
*
FROM table
)
WHERE ROW_NUMBER() between [start_range] and [end_range]
用于 MySQL 和其他一些数据库:
SELECT * FROM table ORDER BY myField LIMIT numberOfRows OFFSET numberOfRowsToSkip
对于 MSSQL,语法是
SELECT * FROM table LIMIT 15000, 15000;
以下信息特定于 Informix RDBMS。
下面引用部分中的 SQL 语句将显示所选表的所有前 N=50 条记录(即从第 0 行到第 49 行)
从table_in_db中选择前 50 个 *
当我们想要显示以中间方式放置在表中的连续 ROW 序列时,我们可以使用 SKIP 指令提供与 ROW-0 的偏移量,以指示 Informix 从中间 ROW(下面的示例中的第 10 行)开始选择,然后我们可以使用 "FIRST" 指令指示从第 10 行到第 50 行要显示的 ROW 数量
从table_in_db中选择跳过 9 个前 41 个 *
同样,当我们想要显示从 15001 到 30000 的 ROW 时 - 我们可以使用以下 SQL 查询。
从table_in_db中选择跳过 15000前 15000 *
要阅读有关此内容的更多信息,请参阅以下 IBM 知识中心 Web 链接中提供的信息 https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqlt.doc/ids_sqt_076.htm: