suchen
HeimDatenbankMySQL-TutorialWie erstelle ich hierarchische rekursive Abfragen in MySQL?

How to Create Hierarchical Recursive Queries in MySQL?

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!

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
Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung?Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung?Mar 19, 2025 pm 03:51 PM

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.

Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen?Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen?Mar 18, 2025 pm 12:01 PM

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]

Wie behandeln Sie große Datensätze in MySQL?Wie behandeln Sie große Datensätze in MySQL?Mar 21, 2025 pm 12:15 PM

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

Was sind einige beliebte MySQL -GUI -Tools (z. B. MySQL Workbench, PhpMyAdmin)?Was sind einige beliebte MySQL -GUI -Tools (z. B. MySQL Workbench, PhpMyAdmin)?Mar 21, 2025 pm 06:28 PM

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]

Wie lassen Sie eine Tabelle in MySQL mit der Drop -Tabelle -Anweisung fallen?Wie lassen Sie eine Tabelle in MySQL mit der Drop -Tabelle -Anweisung fallen?Mar 19, 2025 pm 03:52 PM

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.

Wie erstellen Sie Indizes für JSON -Spalten?Wie erstellen Sie Indizes für JSON -Spalten?Mar 21, 2025 pm 12:13 PM

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.

Wie repräsentieren Sie Beziehungen mit fremden Schlüsseln?Wie repräsentieren Sie Beziehungen mit fremden Schlüsseln?Mar 19, 2025 pm 03:48 PM

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.

Wie sichere ich mich MySQL gegen gemeinsame Schwachstellen (SQL-Injektion, Brute-Force-Angriffe)?Wie sichere ich mich MySQL gegen gemeinsame Schwachstellen (SQL-Injektion, Brute-Force-Angriffe)?Mar 18, 2025 pm 12:00 PM

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

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools