mysql使用函数查询树形数据
来源:互联网 发布:网络打印机显示已暂停 编辑:程序博客网 时间:2024/06/07 06:26
在做web项目时,经常需要查询出树形数据,比如国家-省-市-区,之前一直使用java的循环嵌套进行查询,但是多次与数据库交互,效率非常低下,于是在网上找到一种解决方法,把嵌套循环这一过程放在mysql中去处理,效率大大提高。
转载自:多级树形结构和sql查询实现
废话不多说,先上总的数据
现在我要查出所有河南省极其下属的数据,结果如下
效果不错吧,下面是该函数源码
delimiter /DROP FUNCTION IF EXISTS `mydb`.`getChild`/CREATE FUNCTION `getChild`(rootId varchar(36)) RETURNS VARCHAR(1000) BEGIN DECLARE ptemp VARCHAR(1000); DECLARE ctemp VARCHAR(1000); SET ptemp = '#'; SET ctemp = rootId; WHILE ctemp IS NOT NULL DO SET ptemp = concat(ptemp, ',', ctemp); SELECT group_concat(id) INTO ctemp FROM t_tree_table WHERE FIND_IN_SET(pid, ctemp) > 0; END WHILE; RETURN ptemp; END;
下面是查询语句,只要在getChild的参数中输入需要查询的父级id即可,
例如示例数据中的 河南 的 id 为 2.
select * from t_tree_table where find_in_set(id,getChild(2));
若要拼接成树控件用的多层级的JSON数据,可以参考我另一篇博客
java+mysql递归拼接树形JSON列表
感慨:做java web开发也有两年之久了,渐渐没有刚进入工作岗位时那种求知欲了,渐渐习惯用既有的知识去处理问题,但是我用的方法、算法,真的是最高效的吗?难道就没有更好的解决办法?不,并不是,就像这个看似简单的树形结构,一直以来都是通过java中的循环去查询取值,一直也觉得非常麻烦而且没有效率,但是直到今天才学到这么简便高效的方法,真的是活到老、学到老,在计算机领域,我们永远都是什么都不懂的小屁孩吧。
阅读全文
0 0
- mysql使用函数查询树形数据
- mysql使用函数查询树形数据
- Mysql查询树形结构数据
- MySQL树形数据查询及展示
- MySql数据库-查询、插入数据时转义函数的使用
- MySQL树形查询
- mysql 树形查询
- mysql树形查询语句
- --树形数据查询示例
- 树形数据查询示例
- mysql 使用集合函数查询
- mysql递归查询树形表
- mysql递归查询树形表
- mysql中树形结构查询
- mysql 递归查询树形机构
- SqlServer 递归查询树形数据
- SqlServer 递归查询树形数据
- SqlServer 递归查询树形数据
- 2017第八届蓝桥杯Java省赛
- Madplay移植到mini2440全过程详解[转载]
- 最长子序列和回文字符串(动态规划)
- bzoj1183: [Croatian2008]Umnozak
- 历届试题 九宫重排
- mysql使用函数查询树形数据
- BitmapFactory.Options 缩略图的运用
- angular2之路由与导航(一)
- 一步步学OpenGL3.3+之环境配置
- Andriod开发的新语言_Kotlin简介
- 信息检索-搜索引擎的搭建(Lucene)
- ZigBee_CC2530_02H_广播通信地址
- 空域内的图像增强
- 数据库的范式