Heim >Datenbank >MySQL-Tutorial >Wie finde ich fehlende fortlaufende Nummern in einer MySQL-Spalte mit automatischer Inkrementierung?
Bei dieser Abfrage stieß der Poster auf fehlende Werte in einer Spalte mit automatischer Inkrementierung einer Tabelle, obwohl es keine Duplikate gab. Das Ziel des Problems besteht darin, die Werte fehlender Zahlen zu identifizieren und zurückzugeben, die möglicherweise nicht aufeinanderfolgend sind, wie z. B. die IDs 71-82.
Bessere Lösung
JustPlainMJS bietet eine Alternative, die die Leistung deutlich verbessert.
Weniger effiziente Lösung
Für Tabellen jeder Größe sollten Sie den folgenden Ansatz in Betracht ziehen:
<code class="language-sql">SELECT (t1.id + 1) as gap_starts_at, ( SELECT MIN(t3.id) -1 FROM arrc_vouchers t3 WHERE t3.id > t1.id ) as gap_ends_at FROM arrc_vouchers t1 WHERE NOT EXISTS ( SELECT t2.id FROM arrc_vouchers t2 WHERE t2.id = t1.id + 1 ) HAVING gap_ends_at IS NOT NULL</code>
In dieser Abfrage:
gap_starts_at
stellt die erste ID in der aktuellen Lücke dar. gap_ends_at
stellt die letzte ID in der aktuellen Lücke dar. Das obige ist der detaillierte Inhalt vonWie finde ich fehlende fortlaufende Nummern in einer MySQL-Spalte mit automatischer Inkrementierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!