如何从特定行数中进行选择?

时间:2013-09-17 06:40:59

标签: mysql sql sql-server qsqlquery

在SQL查询中,如何从行号10到50中选择特定数量的行。例如。

SELECT top 15000 [ID].... 

将获得前15000行,但如果我想获得下一个15000,我会怎么做?

5 个答案:

答案 0 :(得分:5)

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 documentationPhilippe为此提供了另一种语法。

对于SQL Server,see this.

答案 1 :(得分:1)

SELECT *
FROM
(
SELECT 
ROW_NUMBER() OVER (ORDER BY ID),
*
FROM table
)  
WHERE ROW_NUMBER() between [start_range] and [end_range]

答案 2 :(得分:0)

用于mysql和其他一些数据库:

SELECT * FROM table ORDER BY myField LIMIT numberOfRows OFFSET numberOfRowsToSkip 

答案 3 :(得分:0)

对于MSSQL,语法为

SELECT * FROM table LIMIT 15000, 15000;

答案 4 :(得分:0)

以下信息特定于 Informix RDBMS。

下面引用部分的 SQL 语句将显示所选表的所有前 N=50 条记录(即从第 0 行到第 49 行)

<块引用>

SELECT FIRST 50 * from table_in_db

当我们想在表格中显示以中间方式放置的连续的 ROW 序列时,我们可以使用 SKIP 指令来提供一个距 ROW-0 的偏移量,以指示 Informix 开始从中间 ROW(下例中的第 10 行)中选择,然后我们可以使用“FIRST”指令指示从第 10 行到第 50 行要显示的行数

<块引用>

SELECT SKIP 9 FIRST 41 * from table_in_db

类似地,当我们想要显示从 15001 到 30000 的 ROW 时 - 我们可以使用以下 SQL 查询。

<块引用>

SELECT SKIP 15000 FIRST 15000 * from table_in_db

要阅读更多相关信息,请参阅以下 IBM 知识中心 Web 链接中提供的信息:https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqlt.doc/ids_sqt_076.htm