我的int数据类型列为No,并希望找到表中缺少的No number。
例如:1,2,3,7,8,9
Ans = 4,5,6
提前致谢。
答案 0 :(得分:2)
只是在简单的sql:
SELECT a.id+1 AS start, MIN(b.id) - 1 AS end
FROM sequence AS a, sequence AS b
WHERE a.id < b.id
GROUP BY a.id
HAVING start < MIN(b.id)
您可以在Sqlfiddle
上试用答案 1 :(得分:1)
尝试以下 -
DECLARE @TABLE TABLE (NUM INT)
INSERT INTO @TABLE
VALUES
(1)
,(2)
,(3)
,(7)
,(8)
,(9)
DECLARE @MIN INT
DECLARE @MAX INT
SELECT @MIN = MIN(NUM) + 1, @MAX = MAX(NUM) - 1 FROM @TABLE
CREATE TABLE #TMP (FIELD_NO INT)
WHILE @MIN <= @MAX
BEGIN
IF NOT EXISTS (SELECT * FROM @TABLE WHERE NUM = @MIN)
INSERT INTO #TMP (FIELD_NO) VALUES (@MIN)
SET @MIN = @MIN + 1
END
SELECT * FROM #TMP
DROP TABLE #TMP
答案 2 :(得分:1)