Подтвердить что ты не робот

Как преобразовать запрос 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?

4b9b3361

Ответ 1

К сожалению, MySQL не поддерживает CTE (Common Table Expressions). Это давно назрела ИМО. Часто вы можете просто использовать подзапрос вместо этого, но этот конкретный CTE является рекурсивным: он ссылается на себя внутри запроса. Рекурсивные CTE чрезвычайно полезны для иерархических данных, но опять же: MySql их вообще не поддерживает. Вы должны реализовать хранимую процедуру, чтобы получить те же результаты.

Предыдущий мой ответ должен стать хорошей отправной точкой:

Генерация дерева на основе глубины из иерархических данных в MySQL (без CTE)

Ответ 3

к сожалению, MYSQl или XAMPP (MARIADB) mysql не поддерживает CTE (COMMON TABLE EXPRESSIONS), для того же вам придется использовать вложенные запросы.

для получения дополнительной информации нажмите на ссылку ниже: -

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

Ответ 4

Mysql CTE Введенный из Mysql версии 8, поэтому вы не можете использовать меньше