29

可能重复:
SQLite 中的 Select 语句识别行号

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

如何才能做到这一点?我做了一些阅读,但没有发现任何特别正确的东西。

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

4

7 回答 7

68

对于 mysql 你有限制,你可以触发查询:

SELECT * FROM table limit 100` -- get 1st 100 records
SELECT * FROM table limit 100, 200` -- get 200 records beginning with row 101

对于 Oracle,您可以使用rownum

请参阅limit 此处的 mysql 选择语法和用法。

对于 SQLite,您有limit, offset. 我没有使用过 SQLite,但我在SQLite Documentation上进行了检查。在此处查看 SQLite 的示例。

于 2012-12-28T11:32:45.353 回答
10

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

SELECT * FROM `table` LIMIT 0, 10 

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

SELECT * FROM `table` LIMIT 5, 5 .

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

语法遵循以下模式:

SELECT * FROM `table` LIMIT [row to start at], [how many to include] .

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

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

见:http ://www.w3schools.com/sql/sql_between.asp

如果要继续行号,可以使用 rownum:

SELECT column_name(s)
FROM table_name
WHERE rownum 
BETWEEN x AND y

但是,我们需要知道您使用的是哪个数据库引擎,因为大多数情况下 rownum 是不同的。

于 2012-12-28T11:30:39.700 回答
9

您可以使用rownum

SELECT * FROM table WHERE rownum > 10 and rownum <= 20
于 2012-12-28T11:31:31.800 回答
2

使用介于条件

SELECT *
FROM TEST
WHERE COLUMN_NAME BETWEEN x AND y ;

或使用 Just 运算符,

SELECT *
FROM TEST
WHERE COLUMN_NAME >= x AND COLUMN_NAME   <= y;
于 2012-12-28T11:31:24.970 回答
1

使用LIMIT子句:

/* rows x- y numbers */
SELECT * FROM tbl LIMIT x,y;

参考:http ://dev.mysql.com/doc/refman/5.0/en/select.html

于 2012-12-28T11:32:46.887 回答
1

假设id是表的主键:

SELECT * FROM table WHERE id BETWEEN 10 AND 50

对于前 20 个结果

SELECT * FROM table order by id limit 20;
于 2012-12-28T11:34:50.707 回答
1

您是否尝试过自己的代码?
这应该有效:

SELECT * FROM people WHERE age BETWEEN x AND y
于 2012-12-28T11:30:19.403 回答