


Bei der Verarbeitung hierarchischer Strukturdaten in der MySQL -Datenbank kann es eine Herausforderung sein, Daten auf verschiedenen Ebenen verschiedener Ebenen zu durchqueren und abzurufen. In diesem Artikel wird eine umfassende Methode zur Erstellung rekursiver Abfragen in MySQL vorgestellt und Lösungen für moderne Versionen und Relikte bereitgestellt.
rekursive Abfrage von MySQL 8.0
MySQL 8.0 führte eine leistungsstarke WITH RECURSIVE
Grammatik ein, mit der Sie einfache und effiziente rekursive Abfrage schreiben können. Zum Beispiel:
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 INNER JOIN cte ON cte.id = p.parent_id ) SELECT * FROM cte;
In dieser Abfrage wird der öffentliche Uhrenausdruck (CTE) mit dem Namen cte
von der Tabelle products
, beginnend aus den angegebenen parent_id
(hier 19), rekursiv durchquert und alle seine Sub -Nodes abrufen.
MySQL 5.x rekursive Abfrage
Vor MySQL 8.0 wurden direkte rekursive Abfragen nicht unterstützt. Sie können jedoch zwei alternative Methoden verwenden:
Wert von Variablen:
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));Diese komplexe Abfrage verwendet Variablen in der Abfrage selbst. Es erkennt den Sub -Node nach (in diesem Beispiel 19). Diese Methode kann jedoch Leistungsprobleme auf dem großen Datensatz haben.
parent_id
Pfadstyling -Kennung:
Baum -ID -Struktur mit Pfadstil -Kennern kann eine rekursive Abfrage vereinfachen. Zum Beispiel:
Diese Methode ermöglicht die Verwendung des Entzuges, damit sie effizient durchquert wird:
CREATE TABLE products (id VARCHAR(255) PRIMARY KEY, name VARCHAR(255)); INSERT INTO products (id, name) VALUES ('19', 'category1'); INSERT INTO products (id, name) VALUES ('19/1', 'category2'); INSERT INTO products (id, name) VALUES ('19/1/1', 'category3'); INSERT INTO products (id, name) VALUES ('19/1/1/1', 'category4');
Zusammenfassung
Die Methode der rekursiven Abfrage in MySQL hängt von den spezifischen Versionen und Datensätzen ab. Für die moderne MySQL -Version bietetSELECT * FROM products WHERE id LIKE '19%';Grammatik eine elegante und effiziente Lösung. Für die verbleibende Version kann die alternative Methode der obigen Übersicht verwendet werden, und ihre Leistung ist unterschiedlich.
Das obige ist der detaillierte Inhalt vonWie kann man mit rekursiven Abfragen in MySQL effizient durch hierarchische Daten navigieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel werden mithilfe der Änderungstabelle von MySQL Tabellen, einschließlich Hinzufügen/Löschen von Spalten, Umbenennung von Tabellen/Spalten und Ändern der Spaltendatentypen, erläutert.

In Artikel werden die Konfiguration der SSL/TLS -Verschlüsselung für MySQL, einschließlich der Erzeugung und Überprüfung von Zertifikaten, erläutert. Das Hauptproblem ist die Verwendung der Sicherheitsauswirkungen von selbstsignierten Zertifikaten. [Charakterzahl: 159]

In Artikel werden Strategien zum Umgang mit großen Datensätzen in MySQL erörtert, einschließlich Partitionierung, Sharding, Indexierung und Abfrageoptimierung.

In Artikel werden beliebte MySQL -GUI -Tools wie MySQL Workbench und PhpMyAdmin beschrieben, die ihre Funktionen und ihre Eignung für Anfänger und fortgeschrittene Benutzer vergleichen. [159 Charaktere]

In dem Artikel werden in MySQL die Ablagerung von Tabellen mithilfe der Drop -Tabellenerklärung erörtert, wobei Vorsichtsmaßnahmen und Risiken betont werden. Es wird hervorgehoben, dass die Aktion ohne Backups, die Detaillierung von Wiederherstellungsmethoden und potenzielle Produktionsumfeldgefahren irreversibel ist.

In Artikeln werden ausländische Schlüssel zur Darstellung von Beziehungen in Datenbanken erörtert, die sich auf Best Practices, Datenintegrität und gemeinsame Fallstricke konzentrieren.

In dem Artikel werden in verschiedenen Datenbanken wie PostgreSQL, MySQL und MongoDB Indizes für JSON -Spalten in verschiedenen Datenbanken erstellt, um die Abfrageleistung zu verbessern. Es erläutert die Syntax und die Vorteile der Indizierung spezifischer JSON -Pfade und listet unterstützte Datenbanksysteme auf.

Artikel erläutert die Sicherung von MySQL gegen SQL-Injektions- und Brute-Force-Angriffe unter Verwendung vorbereiteter Aussagen, Eingabevalidierung und starken Kennwortrichtlinien (159 Zeichen).


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)