sql >> Databáze >  >> RDS >> Sqlserver

Najděte nejmenší nepoužívané číslo v SQL Server

Najděte první řádek, kde neexistuje řádek s 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

Upravit:

Chcete-li zvládnout speciální případ, kdy nejnižší existující id není 1, je zde ošklivé řešení:

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. Jaký je nejvíce doporučený způsob ukládání času v PostgreSQL pomocí Javy?

  2. Nechte AVG ignorovat hodnoty Null nebo Zero

  3. Jak SOUNDEX() funguje v MariaDB

  4. SELECT nebo INSERT řádek v jednom příkazu