SQL:如何选择给定id的下一个id

Mar*_*n K 3 sql

有一个表T(id整数,主键(id).
我想要一个参数化查询,给定id i:
将返回下一个连续id,
如果i = T中的最大id,查询应返回T中的最小id(循环)

Guf*_*ffa 6

您可以选择值@i(如果有)的最小id,以及最小的id,然后获得最大的id:

select max(id)
from (
  select top 1 id
  from T
  where id > @i
  order by id
  union all
  select top 1 id
  from T
  order by id
) x
Run Code Online (Sandbox Code Playgroud)

也许:

select max(id)
from (
  select min(id) as id
  from T
  where id > @i
  union all
  select min(id)
  from T
) x
Run Code Online (Sandbox Code Playgroud)