soporta - ¿Cómo transformar una consulta MSSQL CTE a MySQL?
grafana mysql query example (3)
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?
Afortunadamente ya no es necesario, ya que MySQL a partir de 8.0.1 compatible con CTE .
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: