Heim >Datenbank >MySQL-Tutorial >Wie erstellt man eine rekursive Abfrage in MySQL: Methoden für die Versionen 5.x und 8?

Wie erstellt man eine rekursive Abfrage in MySQL: Methoden für die Versionen 5.x und 8?

DDD
DDDOriginal
2025-01-25 16:06:12495Durchsuche

How to Build a Recursive Query in MySQL: Methods for Versions 5.x and 8 ?

Eine Anleitung zum Erstellen rekursiver Abfragen in MySQL

MySQL bietet mehrere Methoden zum Erstellen rekursiver Abfragen. Hier sind einige Möglichkeiten:

MySQL 8.0 und höher

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>

MySQL 5.x-Version

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!

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