mysql如何实现递归向上查询和递归向下查询所有数据

954 ℃

如何利用mysql​语法实现递归向上查询和递归向下查询所有数据,下面给介绍一下2种不同方法的书写。

向上递归方法:

DROP FUNCTION IF EXISTS queryChildrenData;
DELIMITER;;
CREATE FUNCTION queryChildrenData(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
;;
DELIMITER ;

调用方法:

SELECT * from t_areainfo where FIND_IN_SET(id,queryChildrenData(查当前id向上的所有数据));

向下递归方法:

DROP FUNCTION IF EXISTS queryChildrenData2;
DELIMITER ;;
CREATE FUNCTION queryChildrenData2(areaId INT)
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
;;
DELIMITER ;

调用方法:

SELECT * FROM t_areainfo WHERE FIND_IN_SET(id,queryChildrenData(查当前id向下的所有数据));

MySQL时间区域查询代码

MySQL中如何利用视图简化复杂查询?

mysql如何实现左连接查询表1与表2

mysql如何查询大于指定值的数据并输出

php语法如何结合mysql实现查询功能

标签: find_in_set, group_concat, mysql查询, 递归查询

上面是“mysql如何实现递归向上查询和递归向下查询所有数据”的全面内容,想了解更多关于 js 内容,请继续关注web建站教程。

当前网址:https://m.ipkd.cn/webs_3603.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

vuejs导出excel表格(可以设置样式)
uniapp开发如何实现左滑出现删除按钮
网站加载中样式loading..代码介绍
js如何删除数组中的空对象
帝国cms后台生成更新后前台页面显示空白