Как преобразовать запрос MSSQL CTE в MySQL?
в моей схеме MySQL, у меня есть таблица category(id, parentid, name)
В MSSQL у меня есть этот запрос CTE (для построения дерева категорий снизу вверх для предоставленного идентификатора категории:
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
Как преобразовать этот запрос в MySQL?
Ответы
Ответ 1
К сожалению, MySQL не поддерживает CTE (Common Table Expressions). Это давно назрела ИМО. Часто вы можете просто использовать подзапрос вместо этого, но этот конкретный CTE является рекурсивным: он ссылается на себя внутри запроса. Рекурсивные CTE чрезвычайно полезны для иерархических данных, но опять же: MySql их вообще не поддерживает. Вы должны реализовать хранимую процедуру, чтобы получить те же результаты.
Предыдущий мой ответ должен стать хорошей отправной точкой:
Генерация дерева на основе глубины из иерархических данных в MySQL (без CTE)
Ответ 2
К счастью, он больше не нужен, поскольку MySQL, начиная с 8.0.1 поддерживает CTE.
Ответ 3
к сожалению, MYSQl или XAMPP (MARIADB) mysql не поддерживает CTE (COMMON TABLE EXPRESSIONS), для того же вам придется использовать вложенные запросы.
для получения дополнительной информации нажмите на ссылку ниже: -
https://mariadb.com/kb/en/library/with/
Ответ 4
Mysql CTE Введенный из Mysql версии 8, поэтому вы не можете использовать меньше