Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine rekursive MSSQL-CTE-Abfrage zum Erstellen eines Kategoriebaums in MySQL replizieren?

Wie kann ich eine rekursive MSSQL-CTE-Abfrage zum Erstellen eines Kategoriebaums in MySQL replizieren?

Mary-Kate Olsen
Freigeben: 2024-12-01 08:54:13
Original
715 Leute haben es durchsucht

How Can I Replicate a Recursive MSSQL CTE Query for Building a Category Tree in MySQL?

Umwandeln einer MSSQL-CTE-Abfrage in MySQL

In einem MySQL-Schema mit einer „Kategorie“-Tabelle, die Spalten für ID, Eltern-ID und enthält Mit dem Namen möchten Sie eine MSSQL-CTE-Abfrage replizieren, die einen Kategoriebaum von unten nach oben für eine angegebene Kategorie-ID aufbaut. Diese Abfrage lautet wie folgt:

with CTE (id, pid, name)
as
(
    select id, parentid as pid,name
    from category
    where id = 197
      union all
        select CTE.pid as id , category.parentid as pid, category.name
        from CTE
          inner join category
            on category.id = CTE.pid
 )
 select * from CTE 
Nach dem Login kopieren

Leider fehlt MySQL die Unterstützung für CTEs. Daher ist die Verwendung einer Unterabfrage anstelle dieser Abfrage möglicherweise keine Option, da der betreffende CTE rekursiv ist und innerhalb der Abfrage auf sich selbst verweist. MySQL unterstützt keine rekursiven CTEs.

Um eine ähnliche Funktionalität zu erreichen, muss eine gespeicherte Prozedur implementiert werden. Eine frühere Antwort zum Thema „Generieren eines tiefenbasierten Baums aus hierarchischen Daten in MySQL (keine CTEs)“ kann als Ausgangspunkt für die Erstellung eines solchen Verfahrens dienen.

Das obige ist der detaillierte Inhalt vonWie kann ich eine rekursive MSSQL-CTE-Abfrage zum Erstellen eines Kategoriebaums in MySQL replizieren?. 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