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怎么写递归(sql server实现递归查询的方法示例)
- 循环查询sql server(SQL Server 树形表非循环递归查询的实例详解)
- mysql 分片键规则(MySql8 WITH RECURSIVE递归查询父子集的方法)
- 南宋志南和尚绝句 杨柳风似庙中来(南宋志南和尚绝句)
- 今天要穿什么颜色(今天要穿什么颜色的衣服最吉利)
- 一道高中题-求杯子的高度(一道高中题-求杯子的高度)
- 网坛停摆三巨头亏损惨重,费德勒跌幅88 纳达少赚2400万(网坛停摆三巨头亏损惨重)
- Beyond 版本《无人深空》主线任务攻略 阿特拉斯之道(版本无人深空主线任务攻略)
- 全球科技界最有钱大佬TOP 15 你知道几位(全球科技界最有钱大佬TOP)
热门推荐
- vue十大基础知识(vue实战中的一些实用小魔法汇总)
- python停止执行的代码(python定时检测无响应进程并重启的实例代码)
- left join on和where的区别
- docker默认网络模式(Docker 网络模式及配置方式)
- sql两列内容合并(分组字符合并SQL语句 按某字段合并字符串之一简单合并)
- windows server 2016 远程桌面(Windows Server 2016快速入门部署远程桌面服务的详细图文步骤)
- php编程输出菱形(php输出反斜杠的实例方法)
- mysql 慢查询排查方法(MYSQL慢查询和日志实例讲解)
- html5video怎么优化(html5 移动端视频video的android兼容去除播放控件、全屏)
- 微信小程序实现自动定位(微信小程序实现锚点定位功能的方法实例)