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
Freigeben: 2024-11-30 08:21:11
Original
973 Leute haben es durchsucht

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
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage