首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将MSSQL CTE查询转换为MySQL?

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

Stack Overflow用户
提问于 2012-01-12 18:29:46
回答 4查看 23.4K关注 0票数 28

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

在MSSQL中,我使用了CTE查询(从下到上为提供的类别ID构建一个类别树:

代码语言:javascript
复制
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?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-12 18:40:40

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

我之前的回答应该是一个很好的起点:

Generating Depth based tree from Hierarchical Data in MySQL (no CTEs)

票数 34
EN

Stack Overflow用户

发布于 2017-08-05 00:59:54

谢天谢地,这不再是必要的,因为MySQL是从8.0.1 supports CTE开始的。

票数 4
EN

Stack Overflow用户

发布于 2018-07-11 11:31:02

不幸的是,MYSQl或XAMPP(MARIADB) mysql不支持CTE(公用表表达式),同样,您将不得不使用嵌套查询。

有关详细信息,请单击以下链接:-

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8833535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档