如何按范围选择行?

时间:2012-12-28 11:27:53

标签: sql sqlite

  

可能重复:
  Select statement in SQLite recognizing row number

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

如何做到这一点?我做了一些阅读但没有发现任何特别正确的内容。

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

7 个答案:

答案 0 :(得分:49)

对于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 here的mysql select语法和用法。

对于SQLite,您有limit, offset。我没有使用过SQLite,但我在SQLite Documentation上查了一下。检查SQLite here的示例。

答案 1 :(得分:8)

您可以使用rownum

SELECT * FROM table WHERE rownum > 10 and rownum <= 20

答案 2 :(得分:5)

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

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对大多数人来说是不同的。

答案 3 :(得分:2)

使用条件

SELECT *
FROM TEST
WHERE COLUMN_NAME BETWEEN x AND y ;

或使用Just运算符

SELECT *
FROM TEST
WHERE COLUMN_NAME >= x AND COLUMN_NAME   <= y;

答案 4 :(得分:1)

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

SELECT * FROM people WHERE age BETWEEN x AND y

答案 5 :(得分:1)

使用 LIMIT 子句:

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

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

答案 6 :(得分:0)

假设id是表的主键:

SELECT * FROM table WHERE id BETWEEN 10 AND 50

前20个结果

SELECT * FROM table order by id limit 20;