SQL 循环插入的问题

来源:百度知道 编辑:UC知道 时间:2024/05/09 12:14:46
求一个SQL语句...

A字段是一个INT型,范围为1-1000..只插入一条记录.这条记录的A字段自动编号为1-1000中没有被占用的数值...

举个例:如数据库中有这么几项记录,A字段分别是:1,2,3,8,9....然后再下次插入数据时,因为4没被占用,则自动分配为4...

DECLARE @iStart INT
DECLARE @iEnd INT
DECLARE @i INT
DECLARE @iCount INT

SET @iStart = 1
SET @iEnd = 1000

SET @i=@iStart
WHILE (@i <= @iEnd) BEGIN

SELECT @iCount = COUNT(1) FROM TableName WHERE A = @i
IF @iCount = 0 BEGIN
INSERT INTO TableName (A)
SELECT @i
END
SET @i=@i+1
END

如果你的A字段不是标示列就行在数据库中先查询出最小缺失值,使用EXISTS来做
--先生成测试数据
CREATE TABLE #Test
(
num INT PRIMARY KEY
)
INSERT #Test
SELECT 1
UNION ALL
SELECT 2
UNION ALL
SELECT 3
UNION ALL
SELECT 4
UNION ALL
SELECT 6
UNION ALL
SELECT 9

-----以上ID为1,2,3,4,5,7,8,那么现在插数据应该取最小缺失值6
--查询,将最小值放在一个变量里,供以后插入
DECLARE @Num int
SELECT @Num=MIN(TA.num+1)
FROM #Test AS TA
WHERE NOT EXISTS
(
SELECT *
FROM #Test AS TB
WHERE TB.num= TA.num+1
)
SELECT @Num
--如果有5,再运行上面那句将取得7
--INSER