2012-03-26 49 views
-1

可能重複:
Find missing values
How do I get first unused ID in the table?SQL獲取丟失的ID

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

我需要在這裏做一個查詢來獲取丟失的ID(1號)中,結果將只是第一行(結果),可能使用LIMIT 1,然後使用此ID插入。因此,它看起來這樣:

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

現在對下一個查詢將導致數量只有2

注:
- 我使用的是MySQL 5.1.32

+0

你想要的o/p是什麼? – Teja 2012-03-26 20:16:51

+0

你試圖做一個純粹的SQL語句或作爲一個更大的腳本/程序的一部分? – cpjolicoeur 2012-03-26 20:17:19

+0

你正在使用哪些DBMS(MSSQL,MySQL,Oracle等)? – PinnyM 2012-03-26 20:19:10

回答

0

編輯:回答在他讓我們知道他使用的數據庫之前......但是這個答案告訴我們如何在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 

基本上,你創建一個表變量,並插入一切到它。這應該會給你一個已知的ID值清單。然後,您可以選擇生成的ID與現有ID不匹配的第一個值,然後您將知道可以使用哪些值。