如何按范围选择行?

rth*_*sen 23 sql sqlite

可能重复:
在SQLite中选择语句识别行号

例如, SELECT * FROM table WHERE [row] BETWEEN x AND y

如何才能做到这一点?我做了一些阅读,但没有找到任何特别正确的.

想象一个列表,您希望结果按X量的结果分页,因此对于第10页,您需要从行10*X到10*X + X的结果.而不是一次性显示所有结果

Nan*_*ale 54

对于你有限制的mysql,可以将查询解析为:

SELECT * FROM table limit 100` -- get 1st 100 records
SELECT * FROM table limit 100, 200` -- get 200 records beginning with row 101
Run Code Online (Sandbox Code Playgroud)

对于Oracle,您可以使用rownum

见MySQL的选择语法和用途limit 在这里.

对于SQLite,你有limit, offset.我没有使用SQLite,但我在SQLite文档上检查过它.在这里查看SQLite的示例.


Maj*_*ssi 8

你可以使用rownum:

SELECT * FROM table WHERE rownum > 10 and rownum <= 20
Run Code Online (Sandbox Code Playgroud)


Pez*_*kow 5

在您澄清之后,您正在寻找限制:

SELECT * FROM `table` LIMIT 0, 10 
Run Code Online (Sandbox Code Playgroud)

这将显示数据库的前10个结果.

SELECT * FROM `table` LIMIT 5, 5 .
Run Code Online (Sandbox Code Playgroud)

将显示5-9(5,6,7,8,9)

语法遵循以下模式:

SELECT * FROM `table` LIMIT [row to start at], [how many to include] .
Run Code Online (Sandbox Code Playgroud)

用于选择在两个值之间的行的SQL 是:

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
Run Code Online (Sandbox Code Playgroud)

请参阅:http://www.w3schools.com/sql/sql_between.asp

如果你想要行号,你可以使用rownum:

SELECT column_name(s)
FROM table_name
WHERE rownum 
BETWEEN x AND y
Run Code Online (Sandbox Code Playgroud)

但是,我们需要知道您使用哪个数据库引擎,因为rownum对大多数人来说是不同的.