SQL Server,每隔';x';记录数量

SQL Server,每隔';x';记录数量,sql,sql-server,sql-server-2008,sql-server-2005,Sql,Sql Server,Sql Server 2008,Sql Server 2005,嗨 我有上面显示的“Table1”,上面有一些记录,列名是Id、Name和[Entry Date]。列Id是主键,我使用的是SQL Server 2005 我想编写一个查询,每5条记录返回一次信息,例如,我的查询将返回: 正如您在最终结果中所看到的,仅选择了每5条记录一次的记录,我如何才能做到这一点 谢谢假设ID是连续且唯一的(它们看起来是唯一的),每个记录的索引+=5。这方面的一些伪代码: select * from mytable where id = 1 or id % 5 = 0

我有上面显示的“Table1”,上面有一些记录,列名是Id、Name和[Entry Date]。列Id是主键,我使用的是SQL Server 2005

我想编写一个查询,每5条记录返回一次信息,例如,我的查询将返回:

正如您在最终结果中所看到的,仅选择了每5条记录一次的记录,我如何才能做到这一点


谢谢

假设ID是连续且唯一的(它们看起来是唯一的),每个记录的索引+=5。这方面的一些伪代码:

select * from mytable 
where id = 1 or id % 5 = 0
$index = 0;
while ( $index <= $totalRecords ) {
   $result = "select * from records where id='$index'";
   /*process results*/
   $index += 5; /*increment index for next query*/
}
$index=0;

而($index)看看这个……还有这个。诀窍是使用SQL的行号()如果sql server没有提供每x秒触发一个过程的方法,则无法使用sql query执行此操作,否则您需要使用某种语言,您还必须跟踪所获取的数据。1、5、10、15。这不是每5次。第一次的差异是4,而后续的所有差异都是5。是否执行你的意思是1,6,11,16,…?@Shark,谢谢你的输入。要跳过的记录数在这一点上是不相关的。我只是想每n个数字跳过一定数量的记录,所以它可以是4,5或6。但是谢谢。如果由于删除导致ID之间存在间隙,这将不起作用。假设所有记录都是连续的。没有删除。没有失败nserts.EtcHeh!你甚至迎合了loigc中关于OPs部分的错误,尼斯:)谢谢你,巴萨姆,你提供的解决方案按预期工作。我接受你的回答。
SELECT id, name, entryDate 
  FROM (SELECT ROW_NUMBER() OVER(ORDER BY id) rowNumber, Id, name, entryDate
          FROM MyTable)
  WHERE rowNumber = 1
     OR rowNumber % 5 = 0