with as性能调优

用with as查询出一个表。想要引用这个查询结果,比如对这个查询出来的表进行聚合,该怎么用呀。直接select 语句from( with as 已经查好的表),会报错,求大佬解答

with A as()
select 语句from A


WITH HH
AS
(SELECT ID FROM DEPT WHERE NAME LIKE '苏州%'
)
SELECT SUM(求和列) FROM
(
select * from proj where dept in (select dept from HH)
)

直接select 语句from( with as 已经查好的表),会报错,那个是with-as自身的性质决定的,with-as定义的是一张临时虚拟表,它的意义是需要定义后立即被使用,而你这种结果,with as 之后已经没有引用到这个临时表的了,可以看一下官网对with-as的介绍,就明白了

还有,要注意一下mysql版本,要求8的版本才可以使用with-as语法

with as 只能放在最前面,你这条sql要求和的话,没必要再套一层

WITH HH
AS
(SELECT ID FROM DEPT WHERE NAME LIKE '苏州%'
)
select SUM(求和列)  from proj where dept in (select * from HH)

给你的with as 的结果起个表名,select就可以使用了,如果还报错,把错误贴出来,帮你解决