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
Freigeben: 2025-01-25 16:06:12
Original
419 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage