首页 >数据库 >mysql教程 >如何复制递归 MSSQL CTE 查询以在 MySQL 中构建类别树?

如何复制递归 MSSQL CTE 查询以在 MySQL 中构建类别树?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-01 08:54:13801浏览

How Can I Replicate a Recursive MSSQL CTE Query for Building a Category Tree in MySQL?

将 MSSQL CTE 查询转换为 MySQL

在具有 'category' 表(包含 id、parent id 和 列)的 MySQL 模式中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 缺乏对 CTE 的支持。因此,使用子查询代替它们可能不是一种选择,因为所讨论的 CTE 是递归的,在查询中引用自身。 MySQL 不支持递归 CTE。

要实现类似的功能,必须实现存储过程。之前关于如何“从 MySQL 中的分层数据生成基于深度的树(无 CTE)”的答案可以作为构建此类过程的起点。

以上是如何复制递归 MSSQL CTE 查询以在 MySQL 中构建类别树?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn