当前在线人数17216
首页 - 分类讨论区 - 电脑网络 - 数据库版 -阅读文章
未名交友
[更多]
[更多]
文章阅读:recursive CTE revisited
[同主题阅读] [版面: 数据库] [作者:TheMatrix] , 2019年12月24日12:58:59
TheMatrix
进入未名形象秀
我的博客
[上篇] [下篇] [同主题上篇] [同主题下篇]

发信人: TheMatrix (TheMatrix), 信区: Database
标  题: recursive CTE revisited
发信站: BBS 未名空间站 (Tue Dec 24 12:58:59 2019, 美东)


贴中不能有代码,只能附图,真是挺不方便的。

Recursive CTE有两点困惑,想清楚了隔一段时间又困惑了,今天再确认一遍。

(这里有个附图1)

这里有两点值得指出:

1. 说是recursive,实际上是一个循环。循环体中又用到了名字本身,但是应该理解为
重命名,而不是理解为递归调用。重命名是比如:T=T+1,或者T=A(T),这是重命名。
递归调用是这样的:
def function T(n) { ... T(n-1) ...}
当然所有的递归调用都可以改写为循环,所以SQL recursive CTE也可以完成真正递归
的功能。

2. 在UNION ALL第二部分中出现的CTE这个名字,到底是cumulative的结果还是
incremental的
table?这个是我每次都迷惑的地方。我又确认的一下,是incremental的table,就是
程序结构中那个T。这个可以写一个SQL确认一下,如图2。图中每一行
的first_value和last_value都相等,这说明在每一步的CTE中,都只有一行,也就是
incremental table,而不是cumulative的结果。

--
※ 修改:·TheMatrix 於 Dec 24 13:56:13 2019 修改本文·[FROM: 50.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 50.]

此主题相关图片如下:

[删除]

此主题相关图片如下:
[删除]

[上篇] [下篇] [同主题上篇] [同主题下篇]
[转寄] [转贴] [回信给作者] [修改文章] [删除文章] [同主题阅读] [从此处展开] [返回版面] [快速返回] [收藏] [举报]
 
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996