MySql8 WITH RECURSIVE rekursive Abfrage Eltern-Kind-Sammlungsmethode

MySql8 WITH RECURSIVE rekursive Abfrage Eltern-Kind-Sammlungsmethode

Hintergrund

Wenn Sie eine Funktion entwickeln, die Kommentaren ähnelt, müssen Sie bei Bedarf eine Teilmenge aller Kommentare abfragen. Die Implementierungsmethoden sind in verschiedenen Datenbanken unterschiedlich. Dieser Artikel verwendet die MySQL-Datenbank, Version 8.0

  • START [Param] CONNECT BY PRIOR kann in Oracle-Datenbanken verwendet werden
  • In MySQL müssen Sie WITH RECURSIVE verwenden

brauchen

Suchen Sie nach den Kindern und Enkelkindern, deren Name Zhang San ist. Die PID ist die übergeordnete ID des aktuellen Datensatzes. Beispielsweise ist die PID von Zhang Sans Sohn die ID von Zhang San und so weiter.

Bildbeschreibung hier einfügen

Einführung

Berechnen Sie das kumulierte Ergebnis von 1 bis 100.
WITH RECURSIVE t(n) AS ( //t ist unsere Ergebnistabelle, n ist das Feld, Sie können nur ein Feld angeben, um anzuzeigen, dass kein Feld angegeben ist VALUES (1) //Beginn der Rekursion, an diesem Punkt kann verstanden werden, dass das Feld n der t-Tabelle nur einen Datensatz 1 hat
 UNION ALLE
  WÄHLE n+1 AUS t, WO n < 100   
  /*Das Ergebnis ist hier 2. Zu diesem Zeitpunkt hat das Feld n der Tabelle t zwei Datensätze, 1 und 2.
  * 3
  * ...
  * 100
  */													  
)
SELECT sum(n) FROM t; //Summenfeld n

Vater betet für Sohn

WITH RECURSIVE temp AS ( // Nennen Sie die Ergebnistabelle temp
	SELECT * FROM resource r WHERE r.name = '张三' // Den Datensatz der übergeordneten ID abfragen. Zu diesem Zeitpunkt ist dieser Datensatz bereits in der temporären Tabelle vorhanden, wie in Abbildung 1-1 dargestellt
	UNION ALLE
	/*Beachten Sie zu diesem Zeitpunkt, dass das folgende SQL die letzten beiden Datensätze im erwarteten Ergebnis sind (mit Ausnahme des ersten).
	*Beachten Sie die Bedingung nach where: Wir verwenden die ID des einzigen Datensatzes in der temporären Tabelle, um die PID in der Ressourcentabelle zuzuordnen
	*Die zweite Datensatz-ID von temp wird nur dann abgeglichen, wenn der erste Datensatz von temp nicht mit der PID in der Ressourcentabelle übereinstimmt */
	WÄHLEN Sie r.* VON Ressource r,temp t, WO t.id = r.pid
)Wählen Sie * aus Temp 

Bildbeschreibung hier einfügen

Sohn ermittelt gegen Vater

MIT rekursiver Temperatur ALS (
	SELECT * FROM resource r WHERE r.name = 'Ressourcenname'
	UNION ALLE
	//Es ist bekannt, dass es sich um eine Teilmenge handelt, daher müssen wir die Ressourcen-ID über die temporäre PID abgleichen
	WÄHLEN Sie r.* VON Ressource r,temp t, WO t.pid = r.id
)Wählen Sie * aus Temp 

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über die Methode zum rekursiven Abfragen von Parent-Child-Sets in MySql8. Weitere relevante Inhalte zum rekursiven Abfragen von Parent-Child-Sets in MySql8 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung zur Sicherstellung der Konsistenz von MySQL-Ansichten (mit Prüfoption)
  • So beheben Sie den Fehler „Ein Windows-Dienst mit dem Namen MySQL ist bereits vorhanden.“ bei der Installation von MySQL
  • TIMESTAMP mit implizitem DEFAULT-Wert ist veralteter Fehler in MySQL 5.6
  • Lösung für MySQL-Fehler TIMESTAMP-Spalte mit CURRENT_TIMESTAMP
  • MySQL-Tipps: Lösung für das Problem, dass der Server beendet wird, ohne die PID-Datei zu aktualisieren
  • PHP SQL Injection mit MySQL
  • MySQL 8.0 MIT Abfragedetails

<<:  HTML ist die zentrale Grundlage für die Entwicklung von WEB-Standards

>>:  Vue Uniapp realisiert den Segmentierungseffekt

Artikel empfehlen

JavaScript-Countdown zum Schließen von Anzeigen

Verwenden von Javascript zum Implementieren eines...

So halten Sie eine lange Verbindung aufrecht, wenn Sie den Nginx-Reverse-Proxy verwenden

· 【Szenenbeschreibung】 Nach HTTP1.1 unterstützt d...

Zusammenfassung der Anwendungspraxis für Docker-Container des Node.js-Dienstes

In diesem Artikel wird die Verwendung und Install...

So löschen Sie zusätzliche Kernel in Ubuntu

Schritt 1: Den aktuellen Kernel anzeigen rew $ un...

HTML Einführungstutorial HTML Tag Symbole schnell beherrschen

Randbemerkung <br />Wenn Sie nichts über HTM...

Detaillierte Schritte zum Bereitstellen eines Tomcat-Servers basierend auf IDEA

Inhaltsverzeichnis Einführung Schritt 1 Schritt 2...

Tutorial zur Installation und Konfiguration von MySQL 5.7.16 ZIP-Paketen

In diesem Artikel finden Sie das Installations- u...

Detaillierte Erläuterung der JavaScript-Closure-Probleme

Closures sind eines der traditionellen Features r...

MySQL: Praktische Erfahrung mit der Verwendung der Insert-Anweisung

Inhaltsverzeichnis 1. Mehrere Syntaxen von Insert...