2012-03-26 2 views
-1

Можно создать дубликат:
Find missing values
How do I get first unused ID in the table?SQL Получить Недостающую IdS

myTable 
-----+--------- 
ID | Value 
-----+--------- 
7 | Foo 
9 | Bar 
19 | Etc 

Мне нужно сделать запрос здесь, чтобы получить недостающие ID (номер 1), то результатом будет только первая строка (результат), возможно, с использованием LIMIT 1, а затем введите этот идентификатор. Таким образом, это будет выглядеть так:

myTable 
-----+--------- 
ID | Value 
-----+--------- 
1 | Fir 
7 | Foo 
9 | Bar 
19 | Etc 

Теперь на следующем запросе это приведет только номер 2.

Примечания:
- Я использую MySQL 5.1.32

+0

Что вы хотите о/р? – Teja

+0

Вы пытаетесь сделать это как чистую инструкцию SQL или как часть более крупного скрипта/программы? – cpjolicoeur

+0

Какие СУБД вы используете (MSSQL, MySQL, Oracle и т. Д.)? – PinnyM

ответ

0

EDIT: Ответил прежде чем он сообщит нам, какую базу данных он использует ... но этот ответ рассказывает, как создать временную таблицу в MySQL, и основная идея должна по-прежнему работать: Create table variable in MySQL

Это должно работать для T-SQL:

DECLARE @GapTable 
(
    ID int IDENTITY(1,1), 
    OtherTableID int  
) 

INSERT INTO @gapTable (OtherTableID) 
SELECT OtherTableID = ID 
FROM OtherTable 
ORDER BY ID 


SELECT MIN(ID) 
FROM @GapTable 
WHERE ID <> OtherTableID 

В основном вы создаете переменную таблицы и вставляете в нее все. Это должно дать вам известный список значений идентификаторов. Затем вы можете просто выбрать первое значение, в котором сгенерированный идентификатор не соответствует существующему, и вы будете знать, что вы можете использовать.

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