将递归 CTE 从 SQL Server 重写为 Clickhouse

问题描述

据我所知 Clickhouse 不支持递归 CTE,所以我想重写我在 sql Server 上使用的查询。 下面是片段:)

WITH cte
(ID,ID_PARENT,OBJ_DESC,CHILD,PARENT,CLASS_NAME,CATEGORY_NAME,LEVEL) 
AS ( 
    select a1.STC_sqlIDENTITY,a2.ID,a1.OBJ_DESC,a1.CHILD,a1.PARENT,a1.CLASS_NAME,a1.CATEGORY_NAME,4 as LEVEL from treeOne as a1
    join treeTwo as a2
    on a2.CHILD = a1.PARENT 
    where PARENT in 
    (select distinct PARENT from alberatura where PARENT not in (select CHILD from treeOne))
    union all
    select a2.sqlIDENTITY,itms.ID,a2.OBJ_DESC,a2.CHILD,a2.PARENT,a2.CLASS_NAME,a2.CATEGORY_NAME,itms.LEVEL+1 as LEVEL from treeOne a2
    INNER JOIN cte itms ON itms.CHILD = a2.PARENT
)
SELECT * FROM cte;

你认为 Clickhouse 做这样的操作有效率吗?

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)