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

时间:2010-04-21 19:54:39

标签: sql

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

2 个答案:

答案 0 :(得分: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

或者也许:

select max(id)
from (
  select min(id) as id
  from T
  where id > @i
  union all
  select min(id)
  from T
) x

答案 1 :(得分:1)

这似乎是您正在寻找的:

CREATE PROCEDURE dbo.ProcName
(
    @ID INTEGER
)
AS
SELECT TOP 1 id
FROM table
WHERE id > @ID
ORDER BY id