Erstellen hierarchischer rekursiver Abfragen in MySQL
Hierarchie verstehen
Um hierarchische Abfragen in MySQL zu erstellen, müssen Sie verstehen, wie Hierarchien aufgebaut sind. Betrachten Sie die folgende Beispieltabelle:
id | 名称 | 父ID |
---|---|---|
19 | 类别1 | 0 |
20 | 类别2 | 19 |
21 | 类别3 | 20 |
22 | 类别4 | 21 |
In dieser Tabelle stellt die Spalte parent_id
die ID der übergeordneten Kategorie einer bestimmten Kategorie dar. Kategorie 2 hat beispielsweise einen parent_id
von 19, was darauf hinweist, dass es sich um eine Unterkategorie von Kategorie 1 handelt.
MySQL 8-Lösung: Rekursion WITH
Für MySQL 8 und höher können Sie die rekursive WITH-Syntax verwenden:
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 p.parent_id = cte.id ) SELECT * FROM cte;
Diese Abfrage ruft rekursiv alle untergeordneten Kategorien für eine bestimmte übergeordnete ID ab (19 in diesem Beispiel). Die Ausgabe umfasst alle Kategorien, die direkt oder indirekt zur Kategorie 1 (id=19) gehören.
MySQL 5.x-Lösung: Inline-Variablen oder Selbstverknüpfung
Für ältere MySQL-Versionen (5.x) gibt es zwei Alternativen:
Inline-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 Abfrage nutzt die spezifischen Funktionen von MySQL, um während der Ausführung Variablen zuzuweisen und zu ändern. Indem wir die Variable @pv
mit der übergeordneten ID (in diesem Fall 19) initialisieren und mit der Funktion FIND_IN_SET
prüfen, ob parent_id
in der Nachkommenliste erscheint, können wir die Liste der Nachkommen-IDs inkrementell erstellen.
Selbstverbindung:
SELECT DISTINCT child.id, child.name, child.parent_id FROM products AS child JOIN products AS parent ON child.parent_id = parent.id WHERE parent.id = 19;
Diese Abfrage durchläuft die Hierarchie beginnend bei der angegebenen übergeordneten ID (19) mithilfe eines Selbst-Joins. Indem wir die untergeordnete Tabelle mit der übergeordneten Tabelle basierend auf der Spalte parent_id
verbinden, können wir alle Nachkommen eines bestimmten übergeordneten Elements rekursiv extrahieren.
Das obige ist der detaillierte Inhalt vonWie erstelle ich hierarchische rekursive Abfragen in MySQL?. 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 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.

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.

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

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

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

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Dreamweaver Mac
Visuelle Webentwicklungstools