让MySQL中单句实现无限层次父子关系查询的方法
发表于:2025-02-20 作者:千家信息网编辑
千家信息网最后更新 2025年02月20日,这篇文章将为大家详细讲解有关让MySQL中单句实现无限层次父子关系查询的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在 SQL Server 中,使用 CTE
千家信息网最后更新 2025年02月20日让MySQL中单句实现无限层次父子关系查询的方法
这篇文章将为大家详细讲解有关让MySQL中单句实现无限层次父子关系查询的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在 SQL Server 中,使用 CTE 表达式很容易做到无限层次父子关系查询;在不支持CTE表达式的版本中,借助函数递归也可以轻松实现。
在 MySQL 中,这个需求的实例稍显复杂, MySQL 中没有支持递归的查询,没有表值函数,函数不支持递归,所以通常都是用循环实现,显得比较别扭。今天看到一个用单条语句实现的递归查询,想法独特,分享一下。
相关mysql视频教程
表结构和数据
CREATE TABLE table1(id int, name varchar(10), parent_id int); INSERT table1 VALUES (1, 'Home', 0), (2, 'About', 1), (3, 'Contact', 1), (4, 'Legal', 2), (5, 'Privacy', 4), (6, 'Products', 1), (7, 'Support', 2);
查询 id = 5 的所有父级
SELECT ID.level, DATA.* FROM( SELECT @id as _id, ( SELECT @id := parent_id FROM table1 WHERE id = @id ) as _pid, @l := @l+1 as level FROM table1, (SELECT @id := 5, @l := 0 ) b WHERE @id > 0 ) ID, table1 DATA WHERE ID._id = DATA.id ORDER BY level;
根据这个父级查询方法,很容易可以写出查所有子级的,下面的查询 id=2 的所有子级
SELECT ID.level, DATA.* FROM( SELECT @ids as _ids, ( SELECT @ids := GROUP_CONCAT(id) FROM table1 WHERE FIND_IN_SET(parent_id, @ids) ) as cids, @l := @l+1 as level FROM table1, (SELECT @ids :='1', @l := 0 ) b WHERE @ids IS NOT NULL ) id, table1 DATA WHERE FIND_IN_SET(DATA.id, ID._ids) ORDER BY level, id
关于让MySQL中单句实现无限层次父子关系查询的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
查询
递归
层次
方法
父子
函数
支持
单句
更多
篇文章
表达式
不错
复杂
实用
独特
别扭
内容
实例
想法
教程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库与表连接
恒大珠三角公司软件开发
抚顺新零售软件开发
广东家用软件开发费用
数据库 信息管理技术
基岩版服务器延迟高怎么办
淄川供应链erp软件开发公司
服务器power740价格
上海本地网络技术
一剪梅伴奏软件开发
软件开发培训机构去哪个学呼市
我的世界手机版0.8.1服务器推荐
冀凯软件开发
2014qq代理服务器
国安局涉及网络安全方面的流程
大学生网络技术大赛
软件开发进项抵扣
华为云服务器如何添加快照
宝塔面板数据库默认访问权限
国家网络安全宣传周小知识
质量可靠的语音聊天软件开发
专业数据库迁移
万盈网络技术有限公司
秀山计算机网络技术职业学校
服务器维护内容
深圳服务器回收
如何制作我的世界网易版服务器
山东大久网络技术有限公司
数据库发布会文案
连接服务器后网速慢