Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe rekursiver Abfragen effizient hierarchische Daten in MySQL abrufen?

Wie kann ich mithilfe rekursiver Abfragen effizient hierarchische Daten in MySQL abrufen?

Barbara Streisand
Freigeben: 2025-01-25 15:57:09
Original
891 Leute haben es durchsucht

How Can I Efficiently Retrieve Hierarchical Data in MySQL Using Recursive Queries?

MySQL rekursiv

Hintergrund:

Viele Datenstrukturen, wie z. B. Dateisysteme oder Gewebestrukturdiagramme, erfordern effiziente Methoden, um Daten basierend auf übergeordneten Kind -Beziehungen abzurufen. MySQL bietet mehrere Methoden zum Schreiben rekursiver Abfragen, die diese Strukturen effektiv durchquert haben.

MySQL 8 rekursive Grammatiklösung

MySQL 8 führt rekursiv mit Grammatik ein, was die rekursive Abfrage erheblich vereinfacht.

ersetzen Sie einfach den Wert von durch die übergeordnete Knoten -ID, die Sie Ihren untergeordneten Knoten abrufen möchten.

<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 Pfad -ID -Lösung

parent_id = 19 Vor MySQL 8 müssen Sie andere Methoden zur rekursiven Abfrage verwenden. Eine Methode besteht darin, die Pfad -ID zuzuordnen und die hierarchischen Informationen in die Spalte ID einzubetten.

Zum Beispiel kann die Tabelle mit der Pfad -ID unten angezeigt werden:

Jetzt werden die folgenden Anfragen alle Sub -Nodes der Kategorie 1 abrufen:

ID NAME
19 category1
19/1 category2
19/1/1 category3
19/1/1/1 category4
MySQL 5.x interne Linkvariablen und Self -Connection -Lösungen

MySQL 5.x Eine weitere Option besteht darin, rekursive Abfragen mit internen Variablen, Pfad -IDs oder Self -Connection zu erstellen. Hier sind Beispiele für interne Variablen:
<code class="language-sql">SELECT * FROM products WHERE id LIKE '19%'</code>
Nach dem Login kopieren

Stellen Sie den Wert in als übergeordnete Knoten -ID des Knotens fest, um seinen untergeordneten Knoten abzurufen.

Zusammenfassung
<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
MySQL bietet eine Vielzahl von Methoden, um rekursive Abfragen zu schreiben, um hierarchische Daten zu verarbeiten. Die ausgewählte Methode hängt von den spezifischen Anforderungen der MySQL -Version und Abfrage ab.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe rekursiver Abfragen effizient hierarchische Daten in MySQL abrufen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage