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
Mary-Kate OlsenOriginal
2024-12-01 08:54:13805Durchsuche

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 

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!

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