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

在我的MySQL架构中,我有category(id, parentid, name)

在MSSQL中,我有CTE查询(从底层开始为所提供的类别ID构build一个类别树:

 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?

2 Solutions collect form web for “如何将MSSQL CTE查询转换为MySQL?”

不幸的是,MySQL不支持CTE(公用表expression式)。 国际海事组织已经很久了。 通常,您可以使用子查询来代替,但是这个特定的CTE是recursion的 :它在查询中引用自身。 recursionCTE对分层数据非常有用,但是又一次:MySql根本不支持它们。 你必须实现一个存储过程才能得到相同的结果。

我以前的回答应该提供一个很好的起点:

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

幸好不再需要,因为从8.0.1开始的MySQL 支持CTE 。

  • 尽pipevarchar(MAX)用于每列,但在导入CSV文件时SQL Server中出现错误
  • .Net vs SSIS:SSIS应该用于什么?
  • 数据库可以处理超过5亿行
  • 表名称作为variables
  • 如何将表格旋转45度并将结果保存到另一个表格中?
  • 必须声明标量variables
  • 有没有办法使TSQLvariables不变?
  • 数据库的事务日志已满
  • 如何安排一个SQL查询作业每天运行?
  • 我如何自动化SQL Server Management Studio 2008中的“生成脚本”任务?
  • 获取临时表的结构(如生成sql脚本)并清除当前实例的临时表