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