Heim >Datenbank >MySQL-Tutorial >Wie finde ich fehlende automatisch inkrementierte IDs in einer SQLite-Tabelle?

Wie finde ich fehlende automatisch inkrementierte IDs in einer SQLite-Tabelle?

DDD
DDDOriginal
2025-01-11 08:20:42945Durchsuche

How to Find Missing Auto-Incremented IDs in an SQLite Table?

Verwenden Sie eine Abfrage nach fehlenden Werten, um fehlende IDs in einer Tabelle zu finden

Diese Abfrage soll fehlende IDs in einer Tabelle mit einem automatisch inkrementierenden eindeutigen Primärschlüsselfeld identifizieren, in der gelöschte Einträge möglicherweise Lücken in den ID-Werten verursacht haben. Zum Beispiel eine Tabelle mit den folgenden Daten:

<code> ID  | Value    | More fields...</code>

2 |. Katze | ...
3 |. Fisch |. ...
6 |. Hund |. ...
7 |. Erdferkel | ...
9 |. Eule |. ...
10 |. Schwein | ...
11 |. Dachs |. ...
15 |. Mungo |. ...
19 |. Frettchen |. ...

Das erwartete Ergebnis wird eine Liste fehlender IDs sein:

<code> ID</code>

1
4
5
8
12
13
14
16
17
18

Wir gehen von drei Annahmen aus: Die anfängliche erste ID ist 1, die maximale ID ist die letzte ID und es gibt keine gelöschten IDs nach der aktuellen letzten ID.

Für SQLite gibt es eine einfache Lösung:

<code>SELECT DISTINCT id +1
FROM mytable
WHERE id + 1 NOT IN (SELECT DISTINCT id FROM mytable);</code>

Diese Abfrage identifiziert effektiv fehlende IDs, indem sie eine Zahlenfolge von der ersten bis zur letzten ID generiert und vorhandene IDs ausschließt, sodass fehlende Werte zurückbleiben. Dies ist eine einfache und effiziente Möglichkeit, dieses Problem in SQLite zu lösen.

Das obige ist der detaillierte Inhalt vonWie finde ich fehlende automatisch inkrementierte IDs in einer SQLite-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