持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情
生命不息,学习不止
题外话
人类优于其他物种的一个重要方面是人类学会了思考,所以说在人类的进化道路上,思考是举足轻重的,为了防止大家小脑袋瓜锈住,我打算每天出一道题让大家好好的思考一下。
每日一题:现在的科技真的是日新月异,但什么时候科技能进化到能将我脑袋里的想的钱体现到我的银行卡里呢?手续费高一点也没关系,嘿嘿嘿
废话不多说,上货!
正文
上回讲了储存过程和储存过程的使用,今天再来说一说达梦数据库的递归。
递归
递归在程序中大家都不陌生,实现的效果就是按照层级一层一层的搜索,然后返回各个层级的数据。
但数据库中的递归大家就不太熟悉了,数据库中的递归会重复执行初始select以返回数据子集直到获取完整结果集的公用表的表达式
举个例子,我数据库字段如下
其中pid为id的下属(pid=id),我要查整个关系的模式图
类似这种
这时候光靠简单的sql语句已经很难实现了,就需要实现递归
pg数据库支持递归
pg数据库支持递归语句如下
WITH RECURSIVE 临时表名 as ( select 语句 union select 语句 join 关系 ) select 语句
达梦数据库数据库支持递归
达梦数据库支持递归和pg类似,支持递归语句如下
WITH 临时表名(参数1,参数2) as ( select 语句 union select 语句 join 关系 ) select 语句
达梦数据库不支持递归中使用*
下一篇继续讲达梦数据库的递归,敬请期待。
大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划!