嗨,
我有“表1”如上图所示,有一些关于它的记录和列名ID,姓名和[入境日期]。列id主键,我使用SQL Server 2005的
我想写一个返回信息每5条记录,例如查询我的查询将返回:
正如你所看到的在最终结果中只有记录每5条记录被选中,我该如何做到这一点?
谢谢
嗨,
我有“表1”如上图所示,有一些关于它的记录和列名ID,姓名和[入境日期]。列id主键,我使用SQL Server 2005的
我想写一个返回信息每5条记录,例如查询我的查询将返回:
正如你所看到的在最终结果中只有记录每5条记录被选中,我该如何做到这一点?
谢谢
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
select * from mytable
where id = 1 or id % 5 = 0
这是行不通的。没有删除。没有失败的插入。等 – 2012-01-29 17:25:10
ID之间的差距假设所有的记录是连续 – MatBailie 2012-01-29 17:36:29
假设ID是连续的,独一无二的(他们似乎),只是每一条记录索引+ = 5。为此一些伪代码:
$index = 0;
while ($index <= $totalRecords) {
$result = "select * from records where id='$index'";
/*process results*/
$index += 5; /*increment index for next query*/
}
注意,对于记录ID = 1,将是一个特殊的情况,因为你的ID从1开始,而不是0
希望这给你一个想法。
谢谢你的伪代码。 – Fayde 2012-01-29 18:20:33
看看这个...... http://stackoverflow.com/questions/16568/how-to-select-the-nth-row-in-a-sql-database-table与此http ://msdn.microsoft.com/en-us/library/ms190279.aspx。诀窍是使用SQL的ROW_NUMBER()OVER和模数命令。 – 2012-01-29 17:12:50
你不能用SQL查询做到这一点,除非SQL Server提供了一种方法来触发过程秒每x量,否则,你将需要使用一些语言,你也必须保持跟踪你要取数据。 – Shaheer 2012-01-29 17:14:30
1,5,10,15,即不是每个5.第一个区别是4,而所有的后续是5.你的意思是1,6,11,16,....? – 2012-01-29 17:19:47