在SQL Server 2008中,我找到了表中第一个可用的插槽,其中包含以下存储过程。
If Exists ( Select * From Methods Where MethodSerno =1 )
Select @SlotCode = Min(MethodSerno) + 1
From Methods
Where MethodSerno + 1 Not In ( Select MethodSerno From Methods )
MS Access中是否有相同的方式?
谢谢你...
答案 0 :(得分:0)
对于名为[Methods]的包含行
的表MethodSerno
-----------
1
2
4
5
8
10
我们可以从一个查询开始,找到不有立即继承者的每个值(n + 1)
SELECT t1.MethodSerno
FROM
Methods t1
LEFT JOIN
Methods t2
ON t1.MethodSerno + 1 = t2.MethodSerno
WHERE t2.MethodSerno IS NULL
返回
MethodSerno
-----------
2
5
8
10
“第一个可用”值只是(the smallest of those values)+1
SELECT MIN(t1.MethodSerno) + 1 AS NextSerno
FROM
Methods t1
LEFT JOIN
Methods t2
ON t1.MethodSerno + 1 = t2.MethodSerno
WHERE t2.MethodSerno IS NULL
返回
NextSerno
---------
3