sql >> Databasteknik >  >> RDS >> Sqlserver

Hur får jag nästa tillgängliga nummer från en SQL Server? (Inte en identitetskolumn)

Jag tror från frågan att du är ute efter nästa tillgängliga, även om det kanske inte är detsamma som max+1 eller hur? - I så fall:

Börja med en lista över heltal och leta efter de som inte finns där i gruppidkolumnen, till exempel:

;WITH CTE_Numbers AS (
    SELECT n = 2001
    UNION ALL
    SELECT n + 1 FROM CTE_Numbers WHERE n < 4000 
)
SELECT top 1 n 
FROM CTE_Numbers num
WHERE NOT EXISTS (SELECT 1 FROM MyTable tab WHERE num.n = tab.groupid)
ORDER BY n

Obs:du måste justera 2001/4000 värden i CTE för att tillåta det intervall du vill ha. Jag antog namnet på din tabell till MyTable



  1. Flytta dubbletter av värden till en annan kolumn

  2. Hur lagrar man ett procentvärde?

  3. Hur man använder taltabell i SELECT INTO-statment

  4. MySQL-fel 1449:Användaren som anges som definierare finns inte