![]() |
Datenbanken-Tipp: Lücken in IDs finden
Mit der folgenden Abfrage werden in einer ID-Spalte einer DB-Tabelle vorhandene Lücken festgestellt:
SQL-Code:
Wenn nur die kleinste freie ID gesucht wird, kann dieser Befehl ergänzt werden:
SELECT (Id+1) AS FreieId FROM Tabelle
WHERE (Id+1) NOT IN (SELECT Id FROM Tabelle) ORDER BY FreieId
SQL-Code:
Achtung: Stimmt die Variante für MSSQL wirklich? Ich arbeite nicht damit, habe es aber irgendwo aus den Tiefen meines Gedächtnisses so geholt.
// MySQL
... LIMIT 1 // Firebird ab 1.5 SELECT FIRST 1 ... // MSSQL SELECT TOP 1 ... Dieser Tipp ist entstanden aus der Diskussion ![]() Jürgen |
Re: Datenbanken-Tipp: Lücken in IDs finden
Ergänzend hier mal die Syntax für 3 unterschiedliche DBMS:
MySQL (ab Version 4.1)
SQL-Code:
Firebird
SELECT (Id+1) AS FreieId FROM Tabelle
WHERE (Id+1) NOT IN (SELECT Id FROM Tabelle) ORDER BY FreieId limit 1
SQL-Code:
MSSQL
SELECT First 1 (Id+1) AS FreieId FROM Tabelle
WHERE (Id+1) NOT IN (SELECT Id FROM Tabelle) ORDER BY Id+1
SQL-Code:
SELECT TOP 1 (Id+1) AS FreieId FROM Tabelle
WHERE (Id+1) NOT IN (SELECT Id FROM Tabelle) ORDER BY Id+1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz