mysql使用函数查询树形数据
2017-05-22 21:23
375 查看
在做web项目时,经常需要查询出树形数据,比如国家-省-市-区,之前一直使用java的循环嵌套进行查询,但是多次与数据库交互,效率非常低下,于是在网上找到一种解决方法,把嵌套循环这一过程放在mysql中去处理,效率大大提高。
转载自:多级树形结构和sql查询实现
废话不多说,先上总的数据
![](https://img-blog.csdn.net/20170522211414894?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXExMjU0NzM0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
现在我要查出所有河南省极其下属的数据,结果如下
![](https://img-blog.csdn.net/20170522211601161?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXExMjU0NzM0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
效果不错吧,下面是该函数源码
下面是查询语句,只要在getChild的参数中输入需要查询的父级id即可,
例如示例数据中的 河南 的 id 为 2.
若要拼接成树控件用的多层级的JSON数据,可以参考我另一篇博客
java+mysql递归拼接树形JSON列表
感慨:做java web开发也有两年之久了,渐渐没有刚进入工作岗位时那种求知欲了,渐渐习惯用既有的知识去处理问题,但是我用的方法、算法,真的是最高效的吗?难道就没有更好的解决办法?不,并不是,就像这个看似简单的树形结构,一直以来都是通过java中的循环去查询取值,一直也觉得非常麻烦而且没有效率,但是直到今天才学到这么简便高效的方法,真的是活到老、学到老,在计算机领域,我们永远都是什么都不懂的小屁孩吧。
转载自:多级树形结构和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中的循环去查询取值,一直也觉得非常麻烦而且没有效率,但是直到今天才学到这么简便高效的方法,真的是活到老、学到老,在计算机领域,我们永远都是什么都不懂的小屁孩吧。
相关文章推荐
- mysql使用函数查询树形数据
- MySql的sql语句中添加存储过程或者存储函数来实现Oracle中的start with ……connect by prior……递归(树形结构数据)查询
- 【转】MySQL时间函数的使用:查询本周、下周、本月、下个月份的数据
- 使用OPENDATASOURCE 函数,在查询中实现从ACCESS获取数据,并插入SQLSERVER2000表中
- [DB][ORACLE][统计函数]使用LAG和LEAD函数可以在一次查询中取出同一字段的前N行的数据和后N行的值
- MySQL之GROUP_CONCAT()函数——将查询到的数据拼接成字符串
- hive 使用udf函数实现数据导入到mysql
- 关于 “不允许从数据类型 sql_variant 到 uniqueidentifier 的隐式转换。请使用 CONVERT 函数来运行此查询“的最终解决
- 关于mysql中数据存储复合树形结构,查询时结果按树形结构输出
- T-SQL操作语句之数据查询(二):查询中使用函数
- MySQL的YEARWEEK函数以及查询本周数据
- mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据
- mysql 使用查询子句插入数据
- SAE中使用MySQL查询数据
- mysql查询时去除重复数据以及 FOUND_ROWS 统计记录函数
- SQL SERVER2000教程-第五章 处理数据 第十六节 使用CHARINDEX函数代替Like进行数据查询
- PHP使用mysql_fetch_row查询获得数据行列表的方法
- MySQL笔记之函数查询的使用
- Oracle 使用函数 function查询数据返回游标
- 数据库查询:将查询列表列,拼成一条数据使用什么函数?