sql >> Database teknologi >  >> RDS >> Sqlserver

Find det mindste ubrugte tal i SQL Server

Find den første række, hvor der ikke findes en række 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

Rediger:

For at håndtere det specielle tilfælde, hvor det laveste eksisterende id ikke er 1, er her en grim 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. Dynamisk SQL til at generere kolonnenavne?

  2. 7645 Nul eller tomt fuldtekstprædikat

  3. Problem med indsættelse ved hjælp af psycopg

  4. Valg af N rækker i SQL Server