让MySQL中单句实现无限层次父子关系查询的方法
发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,这篇文章将为大家详细讲解有关让MySQL中单句实现无限层次父子关系查询的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在 SQL Server 中,使用 CTE
千家信息网最后更新 2024年11月15日让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安全错误
数据库的锁怎样保障安全
数据库不能输入相同的行
软件开发雷刻科技有用吗
tcg与汽车网络安全
飞卢小说为什么连不上服务器
数据库死锁原因
1u服务器上架步骤视频
csgo快速切换世界服务器
xp系统网站服务器
管理服务器 公司 北京
软件开发得主要方法
独山软件开发有限公司
网络安全风险评估实施方案
服务器为什么不能放在防火墙里面
新加坡网络安全战
sql数据库 提示无项目
唐山市网络安全培训
国家网络安全周金融总结
我的世界红石建筑服务器推荐
数据库系统表名设计
血刃反叛逃杀服务器
平度ios软件开发哪家便宜
网络技术开发经理工作职责
制作网络安全宣传册
网络安全法的组织
wap签名证书软件开发
滦南租房软件开发
我的世界网易版2b2t服务器编号2022
国家种子数据库中心龙粳3010
服务器电源卡扣的连接原理
关于数据库说法正确的是