我要选择一个范围,从X1到X2。就像你可以选择最好的结果:
SELECT TOP X * FROM TABLE
SELECT TOP 5 * FROM tUsers
但我想选择中间结果。所以如果我想要结果10-20有没有一种方法来查询?
SELECT 10-20 * FROM TABLE?
我要选择一个范围,从X1到X2。就像你可以选择最好的结果:
SELECT TOP X * FROM TABLE
SELECT TOP 5 * FROM tUsers
但我想选择中间结果。所以如果我想要结果10-20有没有一种方法来查询?
SELECT 10-20 * FROM TABLE?
有了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`必须由真正的表名来代替
在Oracle和PostgreSQL中反引号是非法的(实际上除了MySQL之外的任何数据库) - 即使对于MySQL示例 – 2011-04-02 21:13:25
\ your_table \必须替换为真实表名称,它们也是不必要的... – 2011-04-02 21:16:13
但反引号仍然非法(和非标准) – 2011-04-02 21:17:58
你在用什么数据库?如果你在Oracle中,尝试
where rownum >= 10 and rownum < 20;
这将不起作用 - rownum必须使用派生表进行评估:select * from(从your_table中选择col_!,rownum作为rn),其中rn> = 10且rn <20; – 2011-04-02 21:17:33
在MySQL这是
SELECT * FROM table LIMIT 10,20
在SQL Server 2005或以上,你可以使用一个CTE
和ROW_NUMBER
功能:
WITH TblCte as
(
SELECT *
,ROW_NUMBER() OVER (ORDER BY OrderCol) RowNumber
FROM Table
)
SELECT *
FROM TblCte
WHERE RowNumber between 10 and 20
在SQL Server 2000或更低版本中,这是相当困难的,我nefficient: http://social.msdn.microsoft.com/Forums/en-IE/transactsql/thread/e92d9b03-42ad-4ab9-9211-54215e7b9352
你使用什么数据库发行版? (如SQL Server,MySQL等) – 2011-04-02 21:00:23
重复的: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
@Karl:SQL Server,因为其他数据库不支持'SELECT TOP'语法 – intgr 2011-04-02 21:01:52