Heim >Datenbank >MySQL-Tutorial >Wie finde ich fehlende sequentielle IDs in einer MySQL-Tabelle?

Wie finde ich fehlende sequentielle IDs in einer MySQL-Tabelle?

DDD
DDDOriginal
2024-11-30 08:21:111076Durchsuche

How to Find Missing Sequential IDs in a MySQL Table?

Fehlende IDs in MySQL-Tabelle finden

In einer relationalen Datenbanktabelle ist es von entscheidender Bedeutung, die Datenintegrität sicherzustellen, einschließlich der Aufrechterhaltung eindeutiger und sequenzieller IDs. Durch Löschungen oder Einfügungen können jedoch Lücken in den ID-Sequenzen entstehen. Dieser Artikel befasst sich mit der Herausforderung, fehlende IDs aus einer MySQL-Tabelle abzurufen, und stellt eine detaillierte Abfrage zur Lösung dieses Problems bereit.

Problemstellung

Bedenken Sie die folgende MySQL-Tabelle:

ID | Name
1  | Bob
4  | Adam
6  | Someguy

Wie Sie sehen können, fehlen ID-Nummern (2, 3 und 5). Die Aufgabe besteht darin, eine Abfrage zu erstellen, die nur die fehlenden IDs zurückgibt, in diesem Fall „2,3,5“.

Lösung

Die folgende Abfrage ruft ab die fehlenden IDs:

SELECT a.id+1 AS start, MIN(b.id) - 1 AS end
    FROM testtable AS a, testtable AS b
    WHERE a.id < b.id
    GROUP BY a.id
    HAVING start < MIN(b.id)

Erklärung

  • Die Die Abfrage erstellt zwei Aliase, a und b, für die Testtabelle.
  • Sie berechnet den fehlenden Bereich, indem sie die ID von a von der minimalen ID von b subtrahiert (nachdem sichergestellt wurde, dass a.id kleiner als b.id ist). .
  • GROUP BY a.id kategorisiert die Ergebnisse basierend auf a.id und stellt den Anfang fehlender Bereiche dar.
  • HAVING start < MIN(b.id) schließt Lücken aus, in denen die nächste ID belegt ist (z. B. 5 ist ausgeschlossen, da es eine ID 6 gibt).

Zusätzliche Lektüre

  • [Identifizieren von Sequenzlücken in MySQL](https://web.archive.org/web/20220706195255/http://www.codediesel.com/mysql/sequence-gaps-in-mysql/)

Das obige ist der detaillierte Inhalt vonWie finde ich fehlende sequentielle IDs in einer MySQL-Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn