Heim >Datenbank >MySQL-Tutorial >Wie kann ich in SQLite3 rekursive Abfragen durchführen, um hierarchische Daten abzurufen?
Rekursive Abfragen in SQLite3
In SQLite3 ist es möglich, rekursive Abfragen auszuführen, um hierarchische Daten aus einer Tabelle abzurufen, die Eltern-Kind-Tabellen enthält Beziehungen, wie z. B. das Finden aller Unterteile eines bestimmten Oberteils. Um dies zu erreichen, können Sie die WITH RECURSIVE-Syntax verwenden, die in SQLite3-Versionen 3.8.3 und höher unterstützt wird.
WITH RECURSIVE SubParts AS ( SELECT Part, SuperPart, 1 AS Level FROM Part WHERE SuperPart = 'eZ00' UNION ALL SELECT p.Part, p.SuperPart, s.Level + 1 FROM Part AS p JOIN SubParts AS s ON p.SuperPart = s.Part ) SELECT * FROM SubParts;
Die WITH RECURSIVE-Anweisung erstellt eine temporäre Tabelle namens SubParts, die die ursprüngliche Zeile und a enthält Spalte mit dem Namen „Level“, die für die übergeordnete Zeile auf 1 initialisiert wird. Die UNION ALL-Klausel führt den rekursiven Schritt aus, indem sie Zeilen auswählt, die den Unterteilen der aktuellen Zeile entsprechen, und die Ebene um 1 erhöht. Die Abfrage gibt dann alle Zeilen aus der SubParts-Tabelle zurück.
Vor SQLite3 3.8.3
Vor SQLite3 Version 3.8.3 gab es keine rekursiven Abfragen unterstützt. Um die Rekursion im Client-Code für eine mehrstufige Hierarchie zu emulieren, führen Sie die folgenden Schritte aus:
Das obige ist der detaillierte Inhalt vonWie kann ich in SQLite3 rekursive Abfragen durchführen, um hierarchische Daten abzurufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!