SQL INQUIRY 如何获取定义的记录数
Posted
技术标签:
【中文标题】SQL INQUIRY 如何获取定义的记录数【英文标题】:SQL ENQUIRY In how to Get defined number of records 【发布时间】:2010-04-14 10:13:22 【问题描述】:我有一个 select 语句,检索大约 1000 条记录 我想修改它以仅返回由@startIndex 和@count 定义的一些记录 例如: 如果我说@startIndex=20 和@count=20 结果将是:从第 21 条记录到第 40 条 我试着做,但它与检索 1000 条记录所需的时间相同
最好的方法是什么
【问题讨论】:
您使用的是哪个版本的 SQL Server? 我使用的是 SQLServer 2005 【参考方案1】: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
【讨论】:
谢谢 Anthony,但是如果 ID 不是唯一的并且我只想检索 Distinct ID,Row_Numbers 重复数据怎么办 例如所有没有row_number = 100的数据,在使用它并使用distinct之后它变成大约140或150重复一些记录,我不知道如何 您可以删除 distinct 和 GROUP BY id。【参考方案2】:这通常称为分页,如果您在谷歌上搜索“sql server paging”,就会有很多示例,例如this MSDN blog post。
【讨论】:
谢谢Alex,我已经尝试过使用row_number排名功能。但不幸的是,如果我将它与 Distinct 一起使用,它会重复记录以上是关于SQL INQUIRY 如何获取定义的记录数的主要内容,如果未能解决你的问题,请参考以下文章