SQL Server 2008

and*_*ndy -2 sql-server-2008

我有一张这样的桌子

ID          NAME
----------- -----------
1           JON
2           JIM
3           BOB

(3 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

我需要它的代码来选择一个不在列ID中退出的数字并将其放到一个文件中,所以在这个实例中它将是"4".

我需要它做的是从1开始然后检查2,3,依此类推,直到找到表中不存在的数字.

此代码必须在SQL Server 2008中

Tho*_*mas 5

你需要的是一个数字表或列表:

Declare @MaxValue int;
Set @MaxValue = 100;

With Numbers As
    (
    Select 1 As Value
    Union All
    Select Value + 1
    From Numbers
    Where Value <= @MaxValue
    )
Select Min(N.Value)
From Numbers As N
    Left Join MyTable As T
        On T.Id = N.Value
Where T.Id Is Null
OPTION (MAXRECURSION 0)
Run Code Online (Sandbox Code Playgroud)