Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询如何获取定义数量的记录_Sql_Sql Server_Tsql_Select - Fatal编程技术网

SQL查询如何获取定义数量的记录

SQL查询如何获取定义数量的记录,sql,sql-server,tsql,select,Sql,Sql Server,Tsql,Select,我有一个select语句,检索大约1000条记录 我想修改它,只返回由@startIndex和@count定义的一些记录 e、 g:如果我说@startIndex=20和@count=20 结果将是:从第21条记录到第40条 我试着去做,但它花费的时间和我检索1000条记录的时间一样 最好的方法是什么?这通常被称为分页,例如,如果你搜索“sql server分页”,会有很多示例。你使用的是哪个版本的sql server?我使用的是sql server 2005谢谢你,Alex,我已经试着使用了行

我有一个select语句,检索大约1000条记录 我想修改它,只返回由@startIndex和@count定义的一些记录 e、 g:如果我说@startIndex=20和@count=20 结果将是:从第21条记录到第40条
我试着去做,但它花费的时间和我检索1000条记录的时间一样


最好的方法是什么?这通常被称为分页,例如,如果你搜索“sql server分页”,会有很多示例。

你使用的是哪个版本的sql server?我使用的是sql server 2005谢谢你,Alex,我已经试着使用了行数排序功能。但不幸的是,如果我将它与DistinctThank You Anthony一起使用,它会复制记录,但是如果ID不唯一,并且我只想检索不同的ID,行号会复制数据,例如。所有没有row_number=100的数据,在使用它和distinct之后,它会变成大约140或150个重复的记录,我不知道如何删除distinct和GROUP BY id。
WITH data AS (SELECT DISTINCT name FROM sysobjects),
     ranked AS (SELECT ROW_NUMBER() OVER (ORDER BY name) rownum, * FROM data)
SELECT * FROM ranked 
WHERE rownum BETWEEN @startIndex + 1 AND @startIndex + @count 
ORDER BY rownum