久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql實現遞歸查詢的方法

152次閱讀
沒有評論

共計 4399 個字符,預計需要花費 11 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

丸趣 TV 小編給大家分享一下 mysql 實現遞歸查詢的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

mysql 實現遞歸查詢的方法:首先創建表,并初始化數據;然后向下遞歸,利用【find_in_set()】函數和【group_concat()】函數實現遞歸查詢。

mysql 實現遞歸查詢的方法:

1、創建表

DROP TABLE IF EXISTS `t_areainfo`;
CREATE TABLE `t_areainfo` (`id` int(11) NOT 0 AUTO_INCREMENT,
 `level` int(11) DEFAULT 0 ,
 `name` varchar(255) DEFAULT 0 ,
 `parentId` int(11) DEFAULT 0 ,
 `status` int(11) DEFAULT 0 ,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;

2、初始數據

INSERT INTO `t_areainfo` VALUES ( 1 , 0 , 中國 , 0 , 0 
INSERT INTO `t_areainfo` VALUES ( 2 , 0 , 華北區 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 3 , 0 , 華南區 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 4 , 0 , 北京 , 2 , 0 
INSERT INTO `t_areainfo` VALUES ( 5 , 0 , 海淀區 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 6 , 0 , 豐臺區 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 7 , 0 , 朝陽區 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 8 , 0 , 北京 XX 區 1 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 9 , 0 , 北京 XX 區 2 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 10 , 0 , 北京 XX 區 3 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 11 , 0 , 北京 XX 區 4 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 12 , 0 , 北京 XX 區 5 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 13 , 0 , 北京 XX 區 6 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 14 , 0 , 北京 XX 區 7 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 15 , 0 , 北京 XX 區 8 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 16 , 0 , 北京 XX 區 9 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 17 , 0 , 北京 XX 區 10 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 18 , 0 , 北京 XX 區 11 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 19 , 0 , 北京 XX 區 12 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 20 , 0 , 北京 XX 區 13 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 21 , 0 , 北京 XX 區 14 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 22 , 0 , 北京 XX 區 15 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 23 , 0 , 北京 XX 區 16 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 24 , 0 , 北京 XX 區 17 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 25 , 0 , 北京 XX 區 18 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 26 , 0 , 北京 XX 區 19 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 27 , 0 , 北京 XX 區 1 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 28 , 0 , 北京 XX 區 2 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 29 , 0 , 北京 XX 區 3 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 30 , 0 , 北京 XX 區 4 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 31 , 0 , 北京 XX 區 5 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 32 , 0 , 北京 XX 區 6 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 33 , 0 , 北京 XX 區 7 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 34 , 0 , 北京 XX 區 8 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 35 , 0 , 北京 XX 區 9 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 36 , 0 , 北京 XX 區 10 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 37 , 0 , 北京 XX 區 11 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 38 , 0 , 北京 XX 區 12 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 39 , 0 , 北京 XX 區 13 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 40 , 0 , 北京 XX 區 14 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 41 , 0 , 北京 XX 區 15 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 42 , 0 , 北京 XX 區 16 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 43 , 0 , 北京 XX 區 17 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 44 , 0 , 北京 XX 區 18 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 45 , 0 , 北京 XX 區 19 , 4 , 0 
INSERT INTO `t_areainfo` VALUES ( 46 , 0 , xx 省 1 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 47 , 0 , xx 省 2 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 48 , 0 , xx 省 3 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 49 , 0 , xx 省 4 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 50 , 0 , xx 省 5 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 51 , 0 , xx 省 6 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 52 , 0 , xx 省 7 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 53 , 0 , xx 省 8 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 54 , 0 , xx 省 9 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 55 , 0 , xx 省 10 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 56 , 0 , xx 省 11 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 57 , 0 , xx 省 12 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 58 , 0 , xx 省 13 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 59 , 0 , xx 省 14 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 60 , 0 , xx 省 15 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 61 , 0 , xx 省 16 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 62 , 0 , xx 省 17 , 1 , 0 
INSERT INTO `t_areainfo` VALUES ( 63 , 0 , xx 省 18 , 1 , 0 
INSERT INTO `t_areainfo` VALUES (64 , 0 , xx 省 19 , 1 , 0

3、向下遞歸

利用 find_in_set() 函數和 group_concat() 函數實現遞歸查詢:

mysql 實現遞歸查詢的方法

DROP FUNCTION IF EXISTS queryChildrenAreaInfo;
DELIMITER ;;
CREATE FUNCTION queryChildrenAreaInfo(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) 
END WHILE;
RETURN sTemp;
DELIMITER ;

4、調用方式

SELECT queryChildrenAreaInfo(1);

mysql 實現遞歸查詢的方法

查詢 id 為 4 下面的所有節點

SELECT * FROM t_areainfo WHERE FIND_IN_SET(id,queryChildrenAreaInfo(4));

5、向上遞歸

DROP FUNCTION IF EXISTS queryChildrenAreaInfo1;
DELIMITER;;
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;
DELIMITER ;

6、調用方式

查詢 id 為 7 的節點的所有上級節點:

SELECT * from t_areainfo where FIND_IN_SET(id,queryChildrenAreaInfo1(7));

mysql 實現遞歸查詢的方法

看完了這篇文章,相信你對 mysql 實現遞歸查詢的方法有了一定的了解,想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-18發表,共計4399字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 浦江县| 桂林市| 高密市| 平泉县| 剑川县| 曲阜市| 克山县| 温州市| 安丘市| 阳原县| 广南县| 五峰| 敖汉旗| 育儿| 阿瓦提县| 金堂县| 阿尔山市| 卢龙县| 毕节市| 冀州市| 达日县| 赞皇县| 洱源县| 兴隆县| 浏阳市| 海原县| 石泉县| 罗田县| 平塘县| 托里县| 诸暨市| 久治县| 洛宁县| 桑日县| 衡东县| 荥经县| 濉溪县| 剑河县| 漠河县| 珠海市| 吉木乃县|