从表中选择,如果到达结束,则从MSSQL中的开始选择

时间:2015-10-02 11:00:15

标签: sql sql-server

有没有办法获取一张桌子并从起点选择10条记录,但是如果到达了表格的末尾,请回到开头?因此,一个包含100条记录的表格,从记录95开始选择10条记录将是95-100和1-4。

1 个答案:

答案 0 :(得分:0)

假设您有一个包含记录编号的列,那么您可以使用算术来定义顺序:

select t.*
from table t
order by (recnum + (100 - 95)) % 100) ;

如果不是:

select t.*
from table t cross join (select count(*) as cnt from t) x
order by (recnum + (x.cnt - 95)) % x.cnt) ;

如果您的记录没有按顺序编号,则可以添加数字:

select t.*
from (select t.*, count(*) over () as cnt,
             row_number() over (order by recnum) as seqnum
      from table t
     ) t
order by (seqnum + (cnt - 95)) % cnt) ;