持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
生命不息,学习不止
题外话
人类优于其他物种的一个重要方面是人类学会了思考,所以说在人类的进化道路上,思考是举足轻重的,为了防止大家小脑袋瓜锈住,我打算每天出一道题让大家好好的思考一下。
每日一题:现在人们的生活条件好了,很多家庭都养了宠物猫,或者宠物狗,但我有一个疑问,为什么我们在路上遇到流浪猫的时候,第一反应是学猫喵喵叫,而遇见流浪狗的第一反应确实狗子过来呢?
废话不多说,上货!
正文
上回讲了数据库中递归的基本概念,pg和达梦数据库对递归的支持和定义语句,今天就来举个例子详细的说说。
案例
查询用户信息表(userinfo)中用户关系图 举个例子,我数据库字段如下
其中pid为id的下属(pid=id)
类似这种
达梦数据库数据库案例实现
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格式的支持,敬请期待。
大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划!