日期:2014-05-17  浏览次数:20461 次

SQL 存储过程 如何取到每隔N行的一个数据
比如我有一个表一列数1,2,3,4,5,6,7,8,9,10.我想要隔一行取出1,3,5,7,9。或者隔两行取1,4,7,10。用存储过程如何才能做到?求牛人指教!

------解决方案--------------------
select * from 表名 where 列名+1%2=0     --隔一行取一个
select * from 表名 where 列名+2%3=0     --隔两行取一个

------解决方案--------------------
假如数据库名为:xuexi
表名为:CS
列名为:sz
那么SQL语句如下(加入到你的存储过程程序段里就可以了):
use xuexi
declare @i int
declare mycursor scroll cursor for select * from cs for update of sz
open mycursor
select @i=count(*) from cs fetch next from mycursor
while @@fetch_status=0 and @i>1 
begin
 fetch RELATIVE 2 from mycursor --这里的RELATIVE 2 你指定2就表示隔行,你指定3就表示隔2行行
 set @i=@i-1
end
close mycursor
deallocate mycursor
------解决方案--------------------
引用:
select * from 表名 where 列名+1%2=0     --隔一行取一个
select * from 表名 where 列名+2%3=0     --隔两行取一个


少俩括号...
select * from 表名 where (列名+1)%2=0     --隔一行取一个
select * from 表名 where (列名+2)%3=0     --隔两行取一个