Como transformar uma consulta CTE do MSSQL para o MySQL?

no meu esquema MySQL, eu tenho a tabela category(id, parentid, name)

No MSSQL, eu tenho essa consulta CTE (para construir uma tree de categoria de baixo para cima para um ID de categoria fornecido:

 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 

Como “transformar” essa consulta no MySQL?

Infelizmente o MySQL não suporta CTE (Common Table Expressions). Este é o IMO muito atrasado. Geralmente, você pode simplesmente usar uma subconsulta, mas esse CTE específico é recursivo : ele se refere a si mesmo dentro da consulta. Os CTEs recursivos são extremamente úteis para dados hierárquicos, mas novamente: o MySql não os suporta de forma alguma. Você precisa implementar um procedimento armazenado para obter os mesmos resultados.

Uma resposta anterior minha deve fornecer um bom ponto de partida:

Gerando Árvore Baseada em Profundidade a partir de Dados Hierárquicos no MySQL (sem CTEs)

infelizmente MYSQL ou XAMPP (MARIADB) mysql não suporta CTEs (COMMON TABLE EXPRESSIONS), para o mesmo você terá que usar consultas aninhadas.

Para mais informações clique no link abaixo: –

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

Felizmente não é mais necessário, pois o MySQL a partir do 8.0.1 suporta o CTE .