¿Cómo transformar una consulta MSSQL CTE a MySQL?

en mi esquema MySQL, tengo la tabla de category(id, parentid, name)

En MSSQL, tengo esa consulta CTE (para construir un árbol de categorías de abajo hacia arriba para una ID de categoría suministrada:

 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 

¿Cómo ‘transformar’ esa consulta a MySQL?

Desafortunadamente MySQL no es compatible con CTE (Common Table Expressions). Esto es IMO desde hace mucho tiempo. A menudo, puede usar una subconsulta en su lugar, pero este CTE en particular es recursivo : se refiere a sí mismo dentro de la consulta. Los CTE recursivos son extremadamente útiles para los datos jerárquicos, pero nuevamente: MySql no los admite en absoluto. Debe implementar un procedimiento almacenado para obtener los mismos resultados.

Una respuesta previa mía debería proporcionar un buen punto de partida:

Generando árbol basado en profundidad a partir de datos jerárquicos en MySQL (sin CTE)

desafortunadamente MYSQl o XAMPP (MARIADB) mysql no es compatible con CTE (EXPRESIONES COMUNES DE LA TABLA), para lo mismo tendrá que usar consultas anidadas.

Para obtener más información, haga clic en el siguiente enlace:

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

Afortunadamente ya no es necesario, ya que MySQL a partir de 8.0.1 es compatible con CTE .