mysql 分片键规则(MySql8 WITH RECURSIVE递归查询父子集的方法)
类别:数据库 浏览量:2350
时间:2022-01-23 02:26:18 mysql 分片键规则
MySql8 WITH RECURSIVE递归查询父子集的方法背景
开发过程中遇到类似评论的功能是,需要时用查询所有评论的子集。不同数据库中实现方式也不同,本文使用mysql数据库,版本为8.0
- oracle数据库中可使用start [param] connect by prior
- mysql 中需要使用 with recursive
需求
找到name为张三的孩子和孙子,pid为当前记录的父id,如张三儿子的pid为张三的id,以此类推。
引入
|
计算1到100的累加的结果。 with recursive t(n) as ( //t为我们结果表,n为字段,可以只指定表明不指定字段 values (1) //递归的开始,此时可理解为t表字段n只有一条记录 1 union all select n+1 from t where n < 100 /*这里产生的结果为 2 ,此时t表的字段n有两条记录分别为1,2 * 3 * ... * 100 */ ) select sum (n) from t; //对字段n求和 |
父求子
|
with recursive temp as ( // 将结果表命名为 temp select * from resource r where r. name = '张三' //查询出父id这条记录,此时这条记录已存在 temp 表中 ,如图1-1 union all /*这时要注意,下面这条sql是获取的期望结果中的后两条记录(不包含第一条) *注意 where 后的条件,我们使用 temp 表中的唯一一条记录的id关联resource表中的pid *仅当 temp 第一条记录匹配不到resource表中的pid时才会对 temp 的第二条记录id进行匹配 */ select r.* from resource r, temp t where t.id = r.pid ) select * from temp |
子查父
|
with recursive temp as ( select * from resource r where r. name = '张三孙子' union all //已知的是子集,所以我们需要通过 temp 的pid匹配resource的id select r.* from resource r, temp t where t.pid = r.id ) select * from temp |
到此这篇关于mysql8 递归查询父子集的方法的文章就介绍到这了,更多相关mysql8 递归查询父子集内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/dylan95/article/details/105739504
您可能感兴趣
- 循环查询sql server(SQL Server 树形表非循环递归查询的实例详解)
- mysql 分片键规则(MySql8 WITH RECURSIVE递归查询父子集的方法)
- sql怎么写递归(sql server实现递归查询的方法示例)
- 鱼竿 夏钓短,冬钓长 ,一定是这样 认清优缺点在选竿(鱼竿夏钓短冬钓长)
- 鲢鳙钓底还是钓浮 流水的水域应怎样做钓(鲢鳙钓底还是钓浮)
- 入秋后的第二场苹果发布会来了 全新M1系列芯片登场(入秋后的第二场苹果发布会来了)
- 苹果正式发布自研芯片M1 5nm 32核心 彻底放弃Intel(苹果正式发布自研芯片M1)
- 苹果自研芯片跑分对比 A16芯片排名靠后,M1系列霸榜(苹果自研芯片跑分对比)
- X86处理器的梦魇 苹果M1自研芯片到底有多强(苹果M1自研芯片到底有多强)
热门推荐
- css怎么给背景颜色设置模糊(CSS设置背景图片模糊内容不模糊的解决方法)
- python发送钉钉消息(钉钉群自定义机器人消息Python封装的实例)
- sqlserver新建表参数错误(Sql Server中判断表、列不存在则创建的方法)
- @RenderBody、@RenderPage、@RenderSection用法
- html5 video标签
- php服务号openid(php获取微信openid方法总结)
- 宝塔面板教程全集(宝塔面板开启防盗链并设置自己想要显示的图片)
- docker的漏洞(一次docker错误的耗时排查过程记录)
- 云web应用防火墙(几款免费web应用防火墙云waf介绍及测评)
- dedecms添加板块(DedeCMS关键词替换问题较完美解决方法)