2011-04-02 103 views
3

可能重复:
Row Offset in MS SQL ServerSQL SELECT查询返回一系列

我要选择一个范围,从X1到X2。就像你可以选择最好的结果:

SELECT TOP X * FROM TABLE 

SELECT TOP 5 * FROM tUsers 

但我想选择中间结果。所以如果我想要结果10-20有没有一种方法来查询?

SELECT 10-20 * FROM TABLE? 
+0

你使用什么数据库发行版? (如SQL Server,MySQL等) – 2011-04-02 21:00:23

+0

重复的:http://stackoverflow.com/questions/187998/row-offset-in-ms-sql-server,http://stackoverflow.com/questions/2135418/equivalent -of-limit-and-offset-for-sql-server – intgr 2011-04-02 21:00:25

+1

@Karl:SQL Server,因为其他数据库不支持'SELECT TOP'语法 – intgr 2011-04-02 21:01:52

回答

11

有了SQL Server:

Row Offset in SQL Server

随着MySQL的:

SELECT * FROM `your_table` LIMIT 10, 20 

借助Oracle:

SELECT * FROM `your_table` WHERE rownum >= 10 and rownum < 20; 

在PostgreSQL :

SELECT * FROM `your_table` LIMIT 20 OFFSET 10 

`your_table`必须由真正的表名来代替

+0

在Oracle和PostgreSQL中反引号是非法的(实际上除了MySQL之外的任何数据库) - 即使对于MySQL示例 – 2011-04-02 21:13:25

+0

\ your_table \必须替换为真实表名称,它们也是不必要的... – 2011-04-02 21:16:13

+0

但反引号仍然非法(和非标准) – 2011-04-02 21:17:58

-2

你在用什么数据库?如果你在Oracle中,尝试

where rownum >= 10 and rownum < 20; 
+2

这将不起作用 - rownum必须使用派生表进行评估:select * from(从your_table中选择col_!,rownum作为rn),其中rn> = 10且rn <20; – 2011-04-02 21:17:33

0

在MySQL这是

SELECT * FROM table LIMIT 10,20