webentwicklung-frage-antwort-db.com.de

Wie wandle ich eine MSSQL CTE-Abfrage in MySQL um?

in meinem MySQL-Schema habe ich die Tabelle category(id, parentid, name)

In der MSSQL habe ich diese CTE-Abfrage (um einen Kategoriebaum von unten nach oben für eine angegebene Kategorie-ID zu erstellen:

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 

Wie kann ich diese Abfrage in MySQL umwandeln?

24
Tony

Leider unterstützt MySQL keinen CTE (Common Table Expressions). Das ist schon lange überfällig IMO. Oft können Sie stattdessen einfach eine Unterabfrage verwenden, aber dieser bestimmte CTE ist recursive : er bezieht sich innerhalb der Abfrage auf sich. Rekursive CTEs sind für hierarchische Daten äußerst nützlich, aber auch hier: MySql unterstützt sie überhaupt nicht. Sie müssen eine gespeicherte Prozedur implementieren, um dieselben Ergebnisse zu erhalten. 

Eine frühere Antwort von mir sollte einen guten Ausgangspunkt bieten:

Tiefenbasierten Baum aus hierarchischen Daten in MySQL erstellen (keine CTEs)

32
Jon Black

Zum Glück ist dies nicht mehr nötig, da MySQL ab 8.0.1CTE unterstützt.

2
Hubbitus

leider unterstützen MYSQl oder XAMPP (MARIADB) Mysql keine CTEs (COMMON TABLE EXPRESSIONS), . Dazu müssen Sie geschachtelte Abfragen verwenden.

für weitere Informationen klicken Sie bitte auf den folgenden Link: -

https://mariadb.com/kb/de/library/with/

0
NupzNupz