首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL 存储过程 怎么取到每隔N行的一个数据

2013-01-17 
SQL 存储过程 如何取到每隔N行的一个数据比如我有一个表一列数1,2,3,4,5,6,7,8,9,10.我想要隔一行取出1,3,

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     --隔两行取一个

热点排行