sql >> Databasteknik >  >> RDS >> Sqlserver

Hitta det minsta oanvända numret i SQL Server

Hitta den första raden där det inte finns en rad med Id + 1

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

Redigera:

För att hantera det speciella fallet där det lägsta befintliga id inte är 1, här är en ful lösning:

SELECT TOP 1 * FROM (
    SELECT t1.Id+1 AS Id
    FROM table t1
    WHERE NOT EXISTS(SELECT * FROM table t2 WHERE t2.Id = t1.Id + 1 )
    UNION 
    SELECT 1 AS Id
    WHERE NOT EXISTS (SELECT * FROM table t3 WHERE t3.Id = 1)) ot
ORDER BY 1


  1. Hur man lägger till ett alternativ till sql_mode i MySQL utan att förlora befintliga inställningar

  2. Hur man använder UPDATE från SELECT i SQL Server

  3. Hibernate native query - kolumn char(3).

  4. Begränsning av främmande nyckel kan orsaka cykler eller flera kaskadvägar?