达梦数据库DM8(十五)

494 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情

生命不息,学习不止

题外话

人类优于其他物种的一个重要方面是人类学会了思考,所以说在人类的进化道路上,思考是举足轻重的,为了防止大家小脑袋瓜锈住,我打算每天出一道题让大家好好的思考一下。

每日一题:现在的科技真的是日新月异,但什么时候科技能进化到能将我脑袋里的想的钱体现到我的银行卡里呢?手续费高一点也没关系,嘿嘿嘿

废话不多说,上货!

正文

在这里插入图片描述

上回讲了储存过程和储存过程的使用,今天再来说一说达梦数据库的递归。

递归

递归在程序中大家都不陌生,实现的效果就是按照层级一层一层的搜索,然后返回各个层级的数据。

但数据库中的递归大家就不太熟悉了,数据库中的递归会重复执行初始select以返回数据子集直到获取完整结果集的公用表的表达式

举个例子,我数据库字段如下

截图_20223010103054.png

其中pid为id的下属(pid=id),我要查整个关系的模式图

截图_20223810103853.png

类似这种

这时候光靠简单的sql语句已经很难实现了,就需要实现递归

pg数据库支持递归

pg数据库支持递归语句如下

WITH RECURSIVE 临时表名 as ( select 语句 union select 语句 join 关系 ) select 语句

达梦数据库数据库支持递归

达梦数据库支持递归和pg类似,支持递归语句如下

WITH 临时表名(参数1,参数2) as ( select 语句 union select 语句 join 关系 ) select 语句

达梦数据库不支持递归中使用*

下一篇继续讲达梦数据库的递归,敬请期待。

在这里插入图片描述

大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划! 在这里插入图片描述