Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Znajdź najmniejszą nieużywaną liczbę w SQL Server

Znajdź pierwszy wiersz, w którym nie istnieje wiersz o identyfikatorze + 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

Edycja:

Aby poradzić sobie ze szczególnym przypadkiem, w którym najniższy istniejący identyfikator nie wynosi 1, oto brzydkie rozwiązanie:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dołączona baza danych jest tylko do odczytu

  2. Konwertuj numer miesiąca na nazwę miesiąca w programie SQL Server (T-SQL)

  3. Czy T-SQL ma funkcję agregującą do łączenia ciągów?

  4. Konwertuj numer miesiąca na funkcję nazwy miesiąca w SQL

  5. Jak uzyskać listę wszystkich języków w SQL Server (T-SQL)