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 如何获取定义的记录数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vb.net 中获取两个日期之间的记录?

如何获取DataGrid的总行数

如何获取 mongodb 中的记录数

如何在SQL中获取常量值

如何使用sql从具有不同列的两个表中获取不同的记录

使用 SQL ORACLE 在 CASE WHEN 中未获取记录时如何设置自定义值?