达梦数据库DM8(十六)

188 阅读2分钟

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

生命不息,学习不止

题外话

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

每日一题:现在人们的生活条件好了,很多家庭都养了宠物猫,或者宠物狗,但我有一个疑问,为什么我们在路上遇到流浪猫的时候,第一反应是学猫喵喵叫,而遇见流浪狗的第一反应确实狗子过来呢?

废话不多说,上货!

正文

在这里插入图片描述

上回讲了数据库中递归的基本概念,pg和达梦数据库对递归的支持和定义语句,今天就来举个例子详细的说说。

案例

查询用户信息表(userinfo)中用户关系图 举个例子,我数据库字段如下

截图_20223010103054.png

其中pid为id的下属(pid=id)

截图_20223810103853.png

类似这种

达梦数据库数据库案例实现

WITH relation(id ,pid,name)  AS
(SELECT fp.id,fp.pid,fp.name FROM userinfo as fp WHERE fp.id=1
                                UNION ALL
                                SELECT f.id,f.pid,f.name FROM userinfo AS f
                                JOIN relation as fc ON f.pid = fc.id) 
                                SELECT cc.id,cc.pid,cc.name
                            FROM relation AS cc 
                            LEFT JOIN netscan_device_type AS parent ON parent.id = cc.pid ;

详细说一下这个语句,

首先relation是一个临时表,后接需要查询的字段

第一个select语句用于限定初始用户,也就是根节点

第二个select语句中使用join连接根节点数据,然后通过on后的f.pid = fc.id限定对应关系

最后的select语句会从递归完毕后的所有结果中查询需要的数据

下一篇继续讲达梦数据库对于json格式的支持,敬请期待。

在这里插入图片描述

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