最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL遞歸查詢樹狀表的子節(jié)點(diǎn)、父節(jié)點(diǎn)具體實(shí)現(xiàn)

 更新時(shí)間:2014年03月24日 16:58:42   作者:  
本程序?qū)懥藘蓚€(gè)sql存儲(chǔ)過程,子節(jié)點(diǎn)查詢算是照搬了,父節(jié)點(diǎn)查詢是逆思維弄的
簡(jiǎn)介:mysql5.0.94版本,該版本以及較高級(jí)的版本(5.5、6等等)尚未支持循環(huán)遞歸查詢,和sqlserver、oracle相比,mysql難于在樹狀表中層層遍歷的子節(jié)點(diǎn)。本程序重點(diǎn)參考了下面的資料,寫了兩個(gè)sql存儲(chǔ)過程,子節(jié)點(diǎn)查詢算是照搬了,父節(jié)點(diǎn)查詢是逆思維弄的。

表結(jié)構(gòu)和表數(shù)據(jù)就不公示了,查詢的表user_role,主鍵是id,每條記錄有parentid字段(對(duì)應(yīng)該記錄的父節(jié)點(diǎn),當(dāng)然,一個(gè)父節(jié)點(diǎn)自然會(huì)有一個(gè)以上的子節(jié)點(diǎn)嘛)
復(fù)制代碼 代碼如下:

CREATE FUNCTION `getChildList`(rootId INT)
RETURNS varchar(1000)
BEGIN
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(id) INTO sChildTemp FROM user_role where FIND_IN_SET(parentid,sChildTemp)>0;
END WHILE;
RETURN sChildList;
END;
/*獲取子節(jié)點(diǎn)*/
/*調(diào)用: 1、select getChildList(0) id; 2、select * 5From user_role where FIND_IN_SET(id, getChildList(2));*/


CREATE FUNCTION `getParentList`(rootId INT)
RETURNS varchar(1000)
BEGIN
DECLARE sParentList varchar(1000);
DECLARE sParentTemp varchar(1000);
SET sParentTemp =cast(rootId as CHAR);
WHILE sParentTemp is not null DO
IF (sParentList is not null) THEN
SET sParentList = concat(sParentTemp,',',sParentList);
ELSE
SET sParentList = concat(sParentTemp);
END IF;
SELECT group_concat(parentid) INTO sParentTemp FROM user_role where FIND_IN_SET(id,sParentTemp)>0;
END WHILE;
RETURN sParentList;
END;
/*獲取父節(jié)點(diǎn)*/
/*調(diào)用: 1、select getParentList(6) id; 2、select * From user_role where FIND_IN_SET(id, getParentList(2));*/

弄完了,pm說不要弄存儲(chǔ)結(jié)構(gòu),在java里面多查幾次吧。。。存儲(chǔ)結(jié)構(gòu)有很多優(yōu)點(diǎn),包括加快查詢速度、提高安全性等等,但是會(huì)加大數(shù)據(jù)庫負(fù)荷,很多文章建議結(jié)合使用,個(gè)人也覺得少用點(diǎn)會(huì)好些。

相關(guān)文章

  • 淺談Mysql時(shí)間的存儲(chǔ)?datetime還是時(shí)間戳timestamp

    淺談Mysql時(shí)間的存儲(chǔ)?datetime還是時(shí)間戳timestamp

    本文主要介紹了淺談Mysql時(shí)間的存儲(chǔ)?datetime還是時(shí)間戳timestamp,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • MySQL數(shù)據(jù)庫分組查詢group by語句詳解

    MySQL數(shù)據(jù)庫分組查詢group by語句詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)庫分組查詢group by語句詳解,文中含有詳細(xì)示例代碼說明解析,有需要的朋友可以借鑒參考想=下,希望能夠有所幫助
    2021-09-09
  • 基于MySQL游標(biāo)的具體使用詳解

    基于MySQL游標(biāo)的具體使用詳解

    本篇文章是對(duì)MySQL游標(biāo)的具體使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL動(dòng)態(tài)修改varchar長(zhǎng)度的方法

    MySQL動(dòng)態(tài)修改varchar長(zhǎng)度的方法

    這篇文章主要介紹了MySQL動(dòng)態(tài)修改varchar長(zhǎng)度的方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • 一文弄懂MYSQL如何列轉(zhuǎn)行

    一文弄懂MYSQL如何列轉(zhuǎn)行

    最近工作中用到了好幾次列轉(zhuǎn)行,索性做個(gè)小總結(jié),下面這篇文章主要給大家介紹了關(guān)于MYSQL如何列轉(zhuǎn)行的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 在Mysql數(shù)據(jù)庫里通過存儲(chǔ)過程實(shí)現(xiàn)樹形的遍歷

    在Mysql數(shù)據(jù)庫里通過存儲(chǔ)過程實(shí)現(xiàn)樹形的遍歷

    關(guān)于多級(jí)別菜單欄或者權(quán)限系統(tǒng)中部門上下級(jí)的樹形遍歷,oracle中有connect by來實(shí)現(xiàn),mysql沒有這樣的便捷途徑,所以MySQL遍歷數(shù)據(jù)表是我們經(jīng)常會(huì)遇到的頭痛問題,下面給大家介紹在Mysql數(shù)據(jù)庫里通過存儲(chǔ)過程實(shí)現(xiàn)樹形的遍歷,一起看看吧
    2016-11-11
  • 解決myBatis中刪除條件的拼接問題

    解決myBatis中刪除條件的拼接問題

    這篇文章主要介紹了解決myBatis中刪除條件的拼接問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 詳解Mysql和Oracle之間的誤區(qū)

    詳解Mysql和Oracle之間的誤區(qū)

    mysql 和Oracle 在開發(fā)中的使用是隨處可見的,那就簡(jiǎn)單去了解一下這倆款火的不行的數(shù)據(jù)庫。
    2021-05-05
  • MySQL分庫分表詳情

    MySQL分庫分表詳情

    互聯(lián)網(wǎng)項(xiàng)目中常用到的關(guān)系型數(shù)據(jù)庫是MySQL,隨著用戶和業(yè)務(wù)的增長(zhǎng),傳統(tǒng)的單庫單表模式難以滿足大量的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)以及查詢,單庫單表中大量的數(shù)據(jù)會(huì)使寫入、查詢效率非常之慢,此時(shí)應(yīng)該采取分庫分表策略來解決。本篇文章主要介紹MySQL分庫分表,需要的朋友可以參考一下
    2021-09-09
  • MySQL服務(wù)器登陸故障ERROR 1820 (HY000)的解決方法

    MySQL服務(wù)器登陸故障ERROR 1820 (HY000)的解決方法

    這篇文章主要為大家詳細(xì)介紹了MySQL服務(wù)器登陸故障的解決方法,幫助大家解決ERROR 1820 (HY000)錯(cuò)誤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評(píng)論

禄劝| 邢台市| 慈利县| 秦皇岛市| 东港市| 苗栗市| 威远县| 明光市| 广昌县| 鸡西市| 千阳县| 青神县| 尼勒克县| 社会| 香港 | 呼图壁县| 萍乡市| 天津市| 桐乡市| 南皮县| 遵化市| 东莞市| 呼图壁县| 应城市| 石河子市| 汝阳县| 阳高县| 沂水县| 桦甸市| 平昌县| 延边| 微博| 尼勒克县| 五河县| 德化县| 进贤县| 章丘市| 贺州市| 喜德县| 金昌市| 乐山市|