Eine Anleitung zum Erstellen rekursiver Abfragen in MySQL
MySQL bietet mehrere Methoden zum Erstellen rekursiver Abfragen. Hier sind einige Möglichkeiten:
Für MySQL 8.0 und höher können Sie die WITH RECURSIVE
-Syntax verwenden:
<code class="language-sql">WITH RECURSIVE cte (id, name, parent_id) AS ( SELECT id, name, parent_id FROM products WHERE parent_id = 19 UNION ALL SELECT p.id, p.name, p.parent_id FROM products p JOIN cte ON p.parent_id = cte.id ) SELECT * FROM cte;</code>
Methode 1: Variablenzuweisung
<code class="language-sql">SELECT id, name, parent_id FROM (SELECT * FROM products ORDER BY parent_id, id) products_sorted, (SELECT @pv := '19') initialisation WHERE FIND_IN_SET(parent_id, @pv) AND LENGTH(@pv := CONCAT(@pv, ',', id));</code>
Methode 2: Pfadstil-ID
Wenn Ihre Hierarchie als Pfad in der ID-Spalte dargestellt wird, können Sie die folgende Abfrage verwenden:
<code class="language-sql">SELECT * FROM products WHERE id LIKE '19/%';</code>
Methode 3: Selbstverbindung
Rekursion kann mithilfe von Selbstverknüpfung implementiert werden:
<code class="language-sql">SELECT * FROM products AS t1 JOIN products AS t2 ON t1.parent_id = t2.id WHERE t1.parent_id = 19;</code>
Wählen Sie die Methode, die Ihren Anforderungen und der MySQL-Version am besten entspricht.
Das obige ist der detaillierte Inhalt vonWie erstellt man eine rekursive Abfrage in MySQL: Methoden für die Versionen 5.x und 8?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!