老师,关于 ‘ WITH RECURSIVE’中的‘RECURSIVE’我有一个疑问

来源:6-39 【实战】 公共表表达式-1

ericdemon

2019-08-06

 WITH RECURSIVE test AS (
	SELECT 1 AS n
	UNION ALL
	SELECT 1+n FROM test WHERE n < 10 
)
SELECT * FROM test ;

老师,为什么在公共表达式中 加了 UNION ALL 然后后面跟上 SELECT 1+n FROM test WHERE n < 10 就可以做循环了呢?
当我把SQL语句改成这样时就值调用了一次

 WITH RECURSIVE test AS (
	SELECT 1 AS n
)
SELECT * FROM test ;

之前对UNION ALL的理解是可以将表和表的数据做合并,但是为什么可以在公共表达式中做无限循环。。

写回答

1回答

sqlercn

2019-08-06

这是一种嵌套调用,你有没有发现在Union all中引用了with定义的临时表。

0
5
ericdemon
非常感谢!让我学到了很多东西
2019-08-08
共5条回复

零基础入门 详解企业主流数据库MySQL8.0

掌握SQL优化与慢查询优化,具备独当一面的能力

1641 学习 · 485 问题

查看课程