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

mysql怎樣遞歸查詢所有數據

146次閱讀
沒有評論

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

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

丸趣 TV 小編給大家分享一下 mysql 怎樣遞歸查詢所有數據,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

mysql 遞歸查詢所有數據的方法:首先創建表,并初始數據;然后利用【find_in_set()】函數和【group_concat()】函數實現遞歸查詢,代碼為【SELECT queryChildrenAreaInfo(1);】。

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() 函數實現遞歸查詢:

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));

mysql 怎樣遞歸查詢所有數據

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發表,共計4486字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 定南县| 东宁县| 永安市| 太康县| 大关县| 陈巴尔虎旗| 灵宝市| 交口县| 丘北县| 德保县| 东安县| 洛川县| 田阳县| 轮台县| 潜江市| 东乌| 义乌市| 宁明县| 博客| 东乌| 霍邱县| 荣昌县| 尚志市| 敦煌市| 桓仁| 伊宁县| 乌兰浩特市| 鄂伦春自治旗| 新安县| 甘洛县| 温泉县| 宁乡县| 仪征市| 甘泉县| 乌什县| 庆云县| 普兰店市| 汶上县| 道孚县| 方城县| 兰溪市|