无论学习什么语言,python、java、php等等若是你之后的方向是web,那么你都离不开数据库,mysql数据库又是开源的,因此是最受欢迎的数据库,也是企业用的最多的数据库,小猿圈老师详解mysql的递归查询,不懂的同窗能够看过来了。php
1、递归语句java
-- 向下递归函数python
SELECT GROUP_CONCAT('''', pk_dept , '''') FROM rzzxdb.bi_dept WHERE FIND_IN_SET(fr_pk_dept,'1070')>0;
设置某个部门下的全部子部门为无效:mysql
update bi_dept set zt ='0' WHERE FIND_IN_SET(fr_pk_dept,'部门ID')>0;
2、自定义递归函数web
利用find_in_set()函数和group_concat()函数实现递归查询:、sql
一、向下递归:数据库
调用方式:函数
SELECT * FROM t_areainfo WHERE FIND_IN_SET(id,queryChildrenAreaInfo(4));
实例:学习
DROP FUNCTION IF EXISTS queryChildrenAreaInfo; CREATE FUNCTION queryChildrenAreaInfo(areaId INT) -- 或者 areaId char RETURNS VARCHAR(4000) BEGIN DECLARE sTemp VARCHAR(4000); DECLARE sTempChd VARCHAR(4000); SET sTemp='$'; SET sTempChd = CAST(areaId AS CHAR); WHILE sTempChd IS NOT NULL DO SET sTemp= CONCAT(sTemp,',',sTempChd); SELECT GROUP_CONCAT(id) INTO sTempChd FROM t_areainfo WHERE FIND_IN_SET(parentId,sTempChd)>0; END WHILE; RETURN sTemp; END;
二、向上递归code
调用方式:
SELECT * from t_areainfo where FIND_IN_SET(id,queryChildrenAreaInfo1(7));
实例:
DROP FUNCTION IF EXISTS queryChildrenAreaInfo1; CREATE FUNCTION queryChildrenAreaInfo1(areaId INT) RETURNS VARCHAR(4000) BEGIN DECLARE sTemp VARCHAR(4000); DECLARE sTempChd VARCHAR(4000); SET sTemp='$'; SET sTempChd = CAST(areaId AS CHAR); SET sTemp = CONCAT(sTemp,',',sTempChd); SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd; WHILE sTempChd <> 0 DO SET sTemp = CONCAT(sTemp,',',sTempChd); SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd; END WHILE; RETURN sTemp; END;
mysql递归方式分为向上递归和向下递归,小猿圈老师详解的mysql递归就到这了,想必你们看后有所了解了,学明白的同窗感受收获满满,有问题的朋友能够去小猿圈看看老师的视频详解,也许看后你会更加深刻的了解。