SQL选择返回范围的查询

时间:2011-04-02 20:57:08

标签: sql sql-server

  

可能重复:
  Row Offset in MS SQL Server

我想选择从x1到x2的范围。就像您可以选择最佳结果一样:

SELECT TOP X * FROM TABLE

SELECT TOP 5 * FROM tUsers

但我想选择中间结果。所以如果我想要结果10-20是否有办法查询?

SELECT 10-20 * FROM TABLE?

4 个答案:

答案 0 :(得分:14)

使用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`必须替换为您的真实表名

答案 1 :(得分:4)

在SQL Server 2005或更高版本中,您可以使用CTEROW_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或更低版本中,它非常困难且效率低下: http://social.msdn.microsoft.com/Forums/en-IE/transactsql/thread/e92d9b03-42ad-4ab9-9211-54215e7b9352

答案 2 :(得分:0)

在mysql中,这是

SELECT * FROM table LIMIT 10,20

答案 3 :(得分:-2)

你在使用什么数据库?如果您使用的是Oracle,请尝试

where rownum >= 10 and rownum < 20;