Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#1

Datenbanken-Tipp: Lücken in IDs finden

  Alt 4. Feb 2007, 11:34
Mit der folgenden Abfrage werden in einer ID-Spalte einer DB-Tabelle vorhandene Lücken festgestellt:
SQL-Code:
SELECT (Id+1) AS FreieId FROM Tabelle
 WHERE (Id+1) NOT IN (SELECT Id FROM Tabelle)
 ORDER BY FreieId
Wenn nur die kleinste freie ID gesucht wird, kann dieser Befehl ergänzt werden:
SQL-Code:
// MySQL
... LIMIT 1
// Firebird ab 1.5
SELECT FIRST 1 ...
// MSSQL
SELECT TOP 1 ...
Achtung: Stimmt die Variante für MSSQL wirklich? Ich arbeite nicht damit, habe es aber irgendwo aus den Tiefen meines Gedächtnisses so geholt.

Dieser Tipp ist entstanden aus der Diskussion [mysql] Autoinc fehlende Einträge von gsh. Meinen Vorschlag hat gsh geprüft und ergänzt.

Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat