Heim >Datenbank >MySQL-Tutorial >Wie finde ich fehlende fortlaufende Nummern in einer MySQL-Spalte mit automatischer Inkrementierung?

Wie finde ich fehlende fortlaufende Nummern in einer MySQL-Spalte mit automatischer Inkrementierung?

Barbara Streisand
Barbara StreisandOriginal
2025-01-12 09:15:43615Durchsuche

How to Find Missing Sequential Numbers in a MySQL Auto-Increment Column?

Finden Sie fortlaufend nummerierte Lücken in MySQL

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!

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