亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

Mysql樹形遞歸查詢的實現方法

2024-07-25 19:09:37
字體:
來源:轉載
供稿:網友

前言

對于數據庫中的樹形結構數據,如部門表,有時候,我們需要知道某部門的所有下屬部分或者某部分的所有上級部門,這時候就需要用到mysql的遞歸查詢

最近在做項目遷移,Oracle版本的遷到Mysql版本,遇到有些oracle的函數,mysql并沒有,所以就只好想自定義函數或者找到替換函數的方法進行改造。

Oracle遞歸查詢

oracle實現遞歸查詢的話,就可以使用start with ... connect by

connect by遞歸查詢基本語法是:

select 1 from 表格 start with ... connect by prior id = pId 

start with:表示以什么為根節點,不加限制可以寫1=1,要以id為123的節點為根節點,就寫為start with id =123

connect by:connect by是必須的,start with有些情況是可以省略的,或者直接start with 1=1不加限制

prior:prior關鍵字可以放在等號的前面,也可以放在等號的后面,表示的意義是不一樣的,比如 prior id = pid,就表示pid就是這條記錄的根節點了

Oracle方面的實現

<select id="listUnitInfo" resultType="com.admin.system.unit.model.UnitModel" databaseId="oracle"> select distinct u.unit_code, u.unit_name, u.unit_tel, u.para_unit_code from lzcity_approve_unit_info u start with 1 = 1 <if test="unitCode != null and unitCode !=''"> and u.unit_code = #{unitCode} </if> <if test="unitName!=null and unitName!=''"> and u.unit_name like '%'|| #{unitName} ||'%' </if> connect by prior u.unit_code = u.para_unit_code and u.unit_code <>u.para_unit_code </select>

Mysql遞歸查詢

下面主要介紹Mysql方面的實現,Mysql并沒有提供類似函數,所以只能通過自定義函數實現,網上很多這種資料,不過已經不知道那篇是原創了,這篇博客寫的不錯, 下面我也是用作者提供的方法實現自己的,先感謝作者的分享

這里借用作者提供的自定義函數,再加上Find_in_set函數 find_in_set(u.unit_code,getunitChildList(#{unitCode})) ,getunitChildList是自定義函數

<select id="listUnitInfo" resultType="com.admin.system.unit.model.UnitModel" databaseId="mysql"> select distinct u.unit_code,  u.unit_name,  u.unit_tel,  u.para_unit_code  from t_unit_info u  <where>  <if test="unitCode != null and unitCode !=''">  and find_in_set(u.unit_code,getunitChildList(#{unitCode}))  </if>  <if test="unitName!=null and unitName!=''">  and u.unit_name like concat('%', #{unitName} ,'%')  </if>  </where> </select>

getUnitChildList自定義函數

DELIMITER $$USE `gd_base`$$DROP FUNCTION IF EXISTS `getUnitChildList`$$CREATE DEFINER=`root`@`%` FUNCTION `getUnitChildList`(rootId INT) RETURNS VARCHAR(1000) CHARSET utf8BEGIN DECLARE sChildList VARCHAR(1000); DECLARE sChildTemp VARCHAR(1000); SET sChildTemp =CAST(rootId AS CHAR); WHILE sChildTemp IS NOT NULL DO IF (sChildList IS NOT NULL) THEN  SET sChildList = CONCAT(sChildList,',',sChildTemp); ELSE SET sChildList = CONCAT(sChildTemp); END IF; SELECT GROUP_CONCAT(unit_code) INTO sChildTemp FROM LZCITY_APPROVE_UNIT_INFO WHERE FIND_IN_SET(para_unit_code,sChildTemp)>0; END WHILE; RETURN sChildList;END$$DELIMITER ;

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情综合色综合啪啪五月| 成人激情在线观看| 91网在线免费观看| 亚洲精品wwwww| 欧美国产中文字幕| 亚洲精品色婷婷福利天堂| 国产精品美女主播| 97人洗澡人人免费公开视频碰碰碰| 中文字幕欧美日韩在线| 久久精品国产成人精品| 久久69精品久久久久久国产越南| 亚洲国语精品自产拍在线观看| 亚洲男人av电影| 久久久噜噜噜久久| 欧美与欧洲交xxxx免费观看| 欧美日韩国产精品一区| 国产精品成av人在线视午夜片| 日韩福利视频在线观看| 久久久久久久久久久91| 福利一区福利二区微拍刺激| 欧洲日本亚洲国产区| 久久久久久久一区二区三区| 国产一区二区三区四区福利| 国产男女猛烈无遮挡91| 欧美精品久久久久a| 亚洲国产天堂网精品网站| 欧美俄罗斯性视频| 日韩国产高清视频在线| 日本精品一区二区三区在线| 国产极品精品在线观看| 久久亚洲精品一区| 77777少妇光屁股久久一区| 中文字幕亚洲一区二区三区| 亚洲www视频| 国产aⅴ夜夜欢一区二区三区| 久久人人爽人人爽人人片av高清| 亚洲国内精品在线| 不卡在线观看电视剧完整版| 国产精品欧美日韩一区二区| 亚洲色图欧美制服丝袜另类第一页| 久久久综合av| 日韩专区在线观看| 日韩av免费在线观看| 在线日韩中文字幕| 91中文在线观看| 日韩av资源在线播放| 亚洲欧美在线x视频| 日韩精品在线私人| 亚洲精品一区二区三区不| 国产在线日韩在线| 亚洲成人黄色网| 97在线视频免费看| 欧美激情第6页| 日韩电视剧在线观看免费网站| 中文字幕日韩欧美在线视频| 色偷偷av一区二区三区| 国产精品热视频| 91免费人成网站在线观看18| 国产一区二区三区在线观看视频| 成人做爰www免费看视频网站| 日韩极品精品视频免费观看| 国产精品久久久久久av福利软件| 91国语精品自产拍在线观看性色| 97超视频免费观看| 亚洲成人在线视频播放| 国产在线精品成人一区二区三区| 国产成人精品亚洲精品| 亚洲一区二区自拍| 国产精品电影网站| 亚洲图片在区色| 国产精品久久久久高潮| 亚洲激情视频网站| 久久久久久一区二区三区| 日韩中文字幕在线免费观看| 欧美亚洲一级片| 国产视频在线一区二区| 日韩在线观看免费全| 91亚洲国产精品| 成人黄色中文字幕| 国产性色av一区二区| 国产区精品在线观看| 精品成人国产在线观看男人呻吟| 91高清视频免费观看| 日韩精品在线看| 俺去啦;欧美日韩| 欧美国产日韩一区二区| 久久人人爽人人爽爽久久| 欧美成人激情在线| 欧美亚洲国产视频小说| 国产91在线播放九色快色| 日韩激情视频在线播放| 国产亚洲精品91在线| 亚洲精品日韩久久久| 国产日韩欧美视频在线| 91影院在线免费观看视频| 欧美激情视频三区| 欧美视频二区36p| 国产主播喷水一区二区| 国产精品视频xxxx| 国产精品精品一区二区三区午夜版| 黄色精品在线看| 色哟哟网站入口亚洲精品| 亚洲成av人乱码色午夜| 久久久久久中文| 欧美亚洲视频在线观看| 色综合五月天导航| 日韩精品在线免费播放| 欧美激情亚洲自拍| 性色av一区二区三区红粉影视| 欧美性猛交xxxx久久久| 日本久久久久亚洲中字幕| 91精品久久久久久综合乱菊| 久久久99久久精品女同性| 亚洲精品国产品国语在线| 日韩av免费看网站| 国产精品小说在线| 欧美日韩亚洲视频一区| 亚洲国产成人精品一区二区| 欧美激情免费在线| 亚洲精品www久久久久久广东| 亚洲经典中文字幕| 国产一区二区在线免费| 在线播放国产一区中文字幕剧情欧美| 色噜噜亚洲精品中文字幕| 欧美成人精品在线| 久久好看免费视频| 亚洲iv一区二区三区| 亚洲xxxxx性| 成人亲热视频网站| 欧美国产视频一区二区| 亚洲区中文字幕| 91chinesevideo永久地址| 日韩专区在线观看| 自拍偷拍亚洲在线| 91po在线观看91精品国产性色| 国产精品亚洲美女av网站| 日韩在线观看电影| 亚洲已满18点击进入在线看片| 亚洲天堂男人天堂女人天堂| 97久久国产精品| 欧美在线中文字幕| 国产精品一区二区三| 最新国产精品拍自在线播放| 久久在线视频在线| 亚洲经典中文字幕| 久久久精品欧美| 97视频在线观看亚洲| 日韩视频免费在线| 色爱av美腿丝袜综合粉嫩av| 日韩av在线精品| 久久久久久欧美| 亚洲一区二区日本| 国产精品久久久久久久一区探花| 国产精品三级美女白浆呻吟| 欧美日韩中文字幕在线| 高清视频欧美一级| 亚洲精品第一国产综合精品| 狠狠躁夜夜躁人人爽天天天天97| 国产精品久久久久久久久久久久久久| 久久久久久av| 欧美在线影院在线视频| 精品国产区一区二区三区在线观看| 韩日精品中文字幕| 欧美大片免费观看在线观看网站推荐|