暂无图片
如何创建 MySQL 分层递归查询?
我来答
分享
Liuxu
2021-09-14
如何创建 MySQL 分层递归查询?

表格:

id	name	parent_id
19	category1	0
20	category2	19
21	category3	20
22	category4	21

复制

现在,我想要一个单一的 MySQL 查询,我只需提供 id [例如说 id=19] 然后我应该得到它的所有子 ID [即 结果应该有 ID ‘20,21,22’]…

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
薛晓刚

这个供参考。虽然是oracle的。但是mysql和oracle的一样。
https://mp.weixin.qq.com/s?__biz=Mzk0NDIxNDg5Mg==&mid=2247483754&idx=1&sn=9148bb5aee487e2649ba53cf2d1fc482&chksm=c3294769f45ece7f73b79c13ddf56eab50a5d90aae8a1c04aed7c051126be5113651ebb5e937&token=1561305497&lang=zh_CN#rd

暂无图片 评论
暂无图片 有用 0
打赏 0
chengang

8.0有了公用表达式,递归就简单了好多好多。
比如你上面这个假设表为T
WITH RECURSIVE CTE AS
(
SELECT * FROM T WHERE ID = 19
UNION ALL
SELECT T.* FROM T
INNER JOIN CTE ON t.parid = cte.id
)

8.0以前版本就要麻烦点

以下是我写 基于两个版本实现递归
https://www.jianshu.com/p/f056a9c322fb

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
MySQL 查询,查询语句能发送多个吗?
回答 1
;号隔开就可以了。可以发送多个。
以下描述中对mysql里并行复制描述正确的有哪些?
回答 1
已采纳
全选ABCD
在Windows service2008 安装MySQL-8.0.19的版本出现1042的错误!
回答 2
已找到问题了,是hosts文件的设置的问题,目前已安装完成了
MySQL数据库表在什么情况下容易损坏?
回答 1
已采纳
服务器突然断电导致数据文件损坏;强制关机,没有先关闭mysqld服务等。
如果表上有写操作没有完成,这个时候加索引,会不会卡住?
回答 2
如果有正在进行的写操作,MySQL会等待这些操作完成。这意味着,直到所有之前的写事务提交或回滚,索引创建操作才会开始。在此期间,表对于其他写操作而言是不可用的,可能会导致这些操作等待或者超时
MySQL现在支持函数索引吗?
回答 3
已采纳
MySQL 8.0.13以及更高版本支持函数索引,MySQL8.0.13之前不支持函数索引
有没有完全兼容MySQL 5.7语法的国产数据库?
回答 6
可以考虑一下国产数据库达梦和POLARMYSQL,选择的区间比较大的。
MYSQL 是否有锁设置并发更新数?
回答 1
innodbthreadconcurrency,如果设置为0,则表示不限制,mysql数据库服务器会尽可能地处理请求非0的话,表示并发数,建议设置小于等于cpu核数;
Druid PS Cache开启影响性能
回答 3
已采纳
缓存本质上是空间换取时间。当占用大量空间但缓存命中率低且命中若没有收益,那么就不推荐使用缓存了。mysql的PSCache是Connection级别的,当相同的sql被不同的Connection执行时
MySQL 8.0.34 IO利用不如MySQL 5.7.34
回答 6
这不是说明8.0的性能更好么
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~