So fragen Sie den minimal verfügbaren ID-Wert in der MySQL-Tabelle ab

So fragen Sie den minimal verfügbaren ID-Wert in der MySQL-Tabelle ab

Als ich mir heute die Laborprojekte ansah, stieß ich auf ein für mich „kniffliges“ Problem. Tatsächlich lag es daran, dass ich zu dumm war. Werfen Sie zuerst die SQL-Anweisung heraus

// Diese Anweisung kann nicht das richtige Abfrageergebnis liefern, wenn die ID ungleich 1 ist.
wähle min(id+1) aus oslist c, wo nicht existiert (wähle ID aus oslist, wo ID = c.id+1);

Als ich diese Abfrageanweisung zum ersten Mal sah, war ich völlig verwirrt, wahrscheinlich, weil ich mich schon lange nicht mehr mit SQL beschäftigt hatte.

1 existiert Syntax

In der SQL-Syntax wird „exists“ zum Filtern von Ergebnissen verwendet. Während des eigentlichen Ausführungsprozesses durchläuft die EXISTS-Anweisung eine Schleife der äußeren Tabelle und fragt bei jeder Wiederholung der Schleife die innere Tabelle ab. Ersetzen Sie die Datensätze der äußeren Tabelle nacheinander in der Unterabfrage. Wenn der Ergebnissatz der Unterabfrage leer ist, bedeutet dies, dass er nicht existiert; andernfalls existiert er.

Hierbei ist zu beachten, dass das Einsetzen der Datensätze der äußeren Tabelle in die Unterabfrage lediglich dazu dient, zu prüfen, ob das Abfrageergebnis leer ist, und nicht dazu, einen inhaltlichen Wertevergleich durchzuführen.

Nehmen wir ein Beispiel:

Wenn die ID in der Tabelle oslist 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15 ist. Hier wird die SQL-Anweisung vom Anfang des Artikels unter Verwendung der Selbstverbindung verwendet.

Der Abfragevorgang läuft dann wie folgt ab:

Nehmen Sie die ID 1 und prüfen Sie, ob in der Oslist die ID = 2 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 2 und prüfen Sie, ob in der Oslist die ID = 3 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 3 und prüfen Sie, ob in der Oslist die ID = 4 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 4 und prüfen Sie, ob in der Oslist die ID = 5 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 5 und prüfen Sie, ob in der Oslist die ID = 6 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 6 und prüfen Sie, ob in der Oslist die ID = 7 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 7 und prüfen Sie, ob in der Oslist die ID = 8 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 8 und prüfen Sie, ob in der Oslist die ID = 9 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 9 und prüfen Sie, ob in der Oslist die ID = 10 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 10 und prüfen Sie, ob in der Oslist die ID = 11 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 11 und prüfen Sie, ob in der Oslist die ID = 12 vorhanden ist? , wenn es nicht existiert, wird es in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 14 und prüfen Sie, ob in der Oslist die ID = 15 vorhanden ist? , falls es existiert, wird es nicht in die Ergebnismenge aufgenommen;
Nehmen Sie die ID 15 und prüfen Sie, ob in der Oslist die ID = 16 vorhanden ist? , wenn es nicht existiert, wird es in die Ergebnismenge aufgenommen;
Nehmen Sie den kleinsten Wert zwischen (11+1) und (15+1) und geben Sie das Ergebnis zurück.

Beenden Sie die Abfrage.

ps: Löschen Sie die Daten mit der kleinsten ID in MySQL

//Methode 1
 Löschen aus Tabellenname, wobei ID in (ID auswählen aus (min(id) ID aus Tabellennamec1 auswählen) t1); 
//Methode 2
aus Tabellennamen löschen, Sortierung nach ID aufsteigend, Limit 1;

Zusammenfassen

Das Obige ist die Methode, die ich Ihnen vorgestellt habe. Ich hoffe, sie wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Zusammenfassung der Methoden für MySQL zum Abrufen des maximalen ID-Werts, der Gesamtzahl der Datensätze in der Tabelle und anderer damit verbundener Probleme
  • 3 Möglichkeiten, den ID-Wert neuer MySql-Datensätze in PHP zu erhalten
  • So ändern Sie den Startwert der MySQL-Auto-Increment-ID
  • 3 Java-Methoden zum Abrufen des Auto-Increment-ID-Werts des zuletzt eingefügten MySQL-Datensatzes
  • Verwenden Sie MySQLs LAST_INSERT_ID, um den eindeutigen ID-Wert jeder Untertabelle zu bestimmen

<<:  JavaScript verwendet Promise zur Verarbeitung mehrerer wiederholter Anfragen

>>:  So überprüfen Sie die Festplattengröße und mounten die Festplatte in Linux

Artikel empfehlen

HTML-Formular und die Verwendung interner Formular-Tags

Code kopieren Der Code lautet wie folgt: <html...

Beispiel für die Integration von Kafka mit Nginx

Hintergrund nginx-kafka-module ist ein Plug-In fü...

Lösung für das MySQL-Anmeldewarnungsproblem

1. Einleitung Wenn wir uns bei MySQL anmelden, wi...

So implementieren Sie die Vue-Bindungsklasse und den Inline-Bindungsstil

Inhaltsverzeichnis Bindungsklasse Inline-Stile bi...

Bild-Scrolling-Effekt mit CSS3 erstellt

Ergebnisse erzielenImplementierungscode html <...

mysql: [FEHLER] unbekannte Option '--skip-grant-tables'

MySQL-Datenbank meldet FEHLER 1045 (28000): Zugri...

Vue-Methode zum Überprüfen, ob der Benutzername verfügbar ist

In diesem Artikelbeispiel wird der spezifische Co...

Schritte zur VMware-Konfiguration des VMnet8-Netzwerks

Inhaltsverzeichnis 1. Einleitung 2. Konfiguration...

Einführung in die Verwendung gängiger Dockerfile-Befehle

Inhaltsverzeichnis 01 CMD 02 EINSTIEGSPUNKT 03 AR...