sql >> Database >  >> RDS >> Sqlserver

Hoe krijg ik het volgende beschikbare nummer van een SQL Server? (Geen kolom Identiteit)

Ik denk uit de vraag dat je op zoek bent naar de volgende die beschikbaar is, hoewel dat misschien niet hetzelfde is als max+1 toch? - In dat geval:

Begin met een lijst met gehele getallen en zoek naar de getallen die er niet in de groupid-kolom staan, bijvoorbeeld:

;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

Opmerking:u moet de 2001/4000 . aanpassen waarden int de CTE om het gewenste bereik toe te staan. Ik nam de naam van je tafel aan door MyTable



  1. '0000-00-00 00:00:00' kan niet worden weergegeven als java.sql.Timestamp-fout

  2. SQL Count-records binnen een maand met een Unix-tijdstempel

  3. Hoe wijzig ik de NAMEDATALEN-configuratie na het installeren van PostgreSQL 9.0?

  4. PostgreSQL:syntaxis van de linker buitenste join