2016-07-22 2 views
0
I have in my column (id) values 
           4 
           5 
           10 

Я хочу выбрать минимальный нубмер, который не существует. Пример значения 1, то 2, то 3, а затем 6 .....Выберите минимальное количество столбцов, которые не существуют

я пытаюсь этот код

IF not EXISTS(SELECT min(id) from table1) select... 
+0

Каково максимальное число? Согласно данным вашего примера, это 10? –

+0

Каков желаемый результат: '1' или' 6'? –

+0

Я действительно не забочусь о максимальном количестве. Я хочу выбрать всегда минимальный, который не существует. Если требуется максимальное число, то можно сказать, что это 10 – user6615498

ответ

0

Вы можете найти первую строку, в которой не существует ряд с Id + 1.

Попробуйте это.

SELECT TOP 1 t1.Id+1 as ID 
FROM table t1 
WHERE NOT EXISTS(SELECT * FROM table t2 WHERE t2.Id = t1.Id + 1) 
ORDER BY t1.Id; 

Проверить это .. Online Demo HERE

+0

Этот код выбирает максимум +1 – user6615498

+0

Также, когда идет минимальное значение 0, я хочу принять следующее минимальное значение, которое равно 6. Этот код выбирает -1 – user6615498

+0

@ user6615498 Пожалуйста, проверьте онлайн-демонстрацию, которую я предоставил, я думаю, что вы найдете нужный результат через этот фрагмент кода. –

0

Create a numbers table в вашей базе данных, то это легко:

SELECT MIN(Numbers.n) As MinMissingId 
FROM [Numbers] 
WHERE NOT EXISTS 
(
    SELECT 1 FROM dbo.TableName t WHERE Numbers.n = t.ID 
) 

Вот небольшой скрипт, который создает таблицу, скопированный из статьи Аарона:

SELECT TOP (1000000) n = CONVERT(INT, ROW_NUMBER() OVER (ORDER BY s1.[object_id])) 
INTO dbo.Numbers 
FROM sys.all_objects AS s1 CROSS JOIN sys.all_objects AS s2 
OPTION (MAXDOP 1); 

CREATE UNIQUE CLUSTERED INDEX n ON dbo.Numbers(n) 
-- WITH (DATA_COMPRESSION = PAGE) 
; 
+0

Неверный синтаксис рядом с 'Числами – user6615498

+0

@ user6615498: где? Кстати, вы действительно используете sql-server 2000? –

+0

Должен ли я использовать оба кода или только первый? Да, я использую sql 2000 – user6615498

Смежные вопросы