一尘不染

如何将MSSQL CTE查询转换为MySQL?

mysql

在我的MySQL模式中,我有category(id, parentid, name)

在MSSQL中,我进行了CTE查询(从下至上为提供的类别ID构建类别树:

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?


阅读 264

收藏
2020-05-17

共1个答案

一尘不染

不幸的是,MySQL不支持CTE(公用表表达式)。IMO早就该这样做了。通常,您可以只使用子查询来代替,但是这种特定的CTE是 递归的
:它在查询中引用自身。递归CTE对于分层数据非常有用,但同样:MySql根本不支持它们。您必须实现一个存储过程才能获得相同的结果。

我先前的答案应该提供一个很好的起点:

从MySQL中的分层数据生成基于深度的树(无CTE)

2020-05-17