Heim >Datenbank >MySQL-Tutorial >Wie kann ich fehlende automatisch inkrementierende IDs in meiner SQL-Datenbanktabelle finden?

Wie kann ich fehlende automatisch inkrementierende IDs in meiner SQL-Datenbanktabelle finden?

Susan Sarandon
Susan SarandonOriginal
2025-01-11 09:38:40161Durchsuche

How Can I Find Missing Auto-Incrementing IDs in My SQL Database Table?

Verwenden Sie SQL, um fehlende IDs in einer Tabelle zu finden

In Datenbanktabellen mit automatisch inkrementierenden Primärschlüsseln können gelöschte Einträge zu „Lücken“ in den Feldwerten führen. Um diese fehlenden IDs zu identifizieren, können Sie eine Abfrage schreiben.

MySQL- und SQL Server-Abfragen:

<code class="language-sql">SELECT ID + 1
FROM table_name
WHERE ID + 1 NOT IN (SELECT DISTINCT ID FROM table_name);</code>

Diese Abfrage liefert eine Liste aller aufeinanderfolgenden fehlenden IDs zwischen dem ersten und letzten Eintrag in der Tabelle.

SQLite-Abfrage:

<code class="language-sql">SELECT DISTINCT id +1
FROM table_name
WHERE id + 1 NOT IN (SELECT DISTINCT id FROM table_name);</code>

SQLite unterstützt das Schlüsselwort LIMIT nicht. Verwenden Sie daher unterschiedliche Unterabfragen, um doppelte Ergebnisse zu vermeiden.

Weitere Hinweise:

  • Diese Abfrage geht davon aus, dass die erste ID 1 ist.
  • Diese Abfrage umfasst keine gelöschten IDs, die höher sind als die aktuelle maximale ID.
  • Um gelöschte IDs zwischen dem aktuellen Maximum und dem angegebenen MaxID-Parameter einzubeziehen, ändern Sie die Abfrage wie folgt:
<code class="language-sql">SELECT ID + 1
FROM table_name
WHERE ID + 1 NOT IN (
  SELECT DISTINCT ID FROM table_name
)
AND ID + 1 < MaxID;</code>

Bitte beachten Sie, dass diese Änderung möglicherweise nicht von allen Versionen von SQLite unterstützt wird.

Das obige ist der detaillierte Inhalt vonWie kann ich fehlende automatisch inkrementierende IDs in meiner SQL-Datenbanktabelle finden?. 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