Oracle轉(zhuǎn)換MySql之遞歸start with詳解
Oracle轉(zhuǎn)換MySql之遞歸start with
Oracle轉(zhuǎn)換Mysql之start with
oracle轉(zhuǎn)mysql其實(shí)很多細(xì)節(jié),這邊就不一 一 描述了,這邊先整理些“坎”吧!
Oracle中start with…
select * from grade_group gg start with gg.group_code=#{groupCode} connect by gg.parent_id= prior gg.id order by gg.group_level
轉(zhuǎn)換為MySql為
SELECT * FROM grade_group WHERE FIND_IN_SET(ID, getGradeGroupChild(#{groupCode})) ORDER BY group_level
這里并非只要簡(jiǎn)單改下sql就行
可以看出需要一個(gè)函數(shù)支撐"getGradeGroupChild"
下面提供了這個(gè)函數(shù)
DROP FUNCTION IF EXISTS `getGradeGroupChild`; DELIMITER $$ CREATE FUNCTION `getGradeGroupChild`(GROUPCODE VARCHAR(100)) RETURNS VARCHAR(10000) CHARSET utf8 BEGIN DECLARE sChildList VARCHAR(10000); DECLARE sChildTemp VARCHAR(1000); --這里我第一次是要將傳進(jìn)來(lái)的GROUPCODE 轉(zhuǎn)換成id,然后去遞歸查詢 SELECT id INTO sChildTemp FROM grade_group WHERE GROUP_CODE = GROUPCODE; WHILE sChildTemp IS NOT NULL DO IF (sChildList IS NOT NULL) THEN SET sChildList = CONCAT(sChildTemp,',',sChildList); ELSE SET sChildList = CONCAT(sChildTemp); END IF; SELECT GROUP_CONCAT(id) INTO sChildTemp FROM grade_group WHERE FIND_IN_SET(PARENT_ID, sChildTemp)>0; END WHILE; RETURN sChildList; END$$ DELIMITER ;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle表中重復(fù)數(shù)據(jù)去重的方法實(shí)例詳解
這篇文章主要介紹了Oracle表中重復(fù)數(shù)據(jù)去重的方法實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07Oracle安裝遇到INS-30131錯(cuò)誤的解決方法
這篇文章主要介紹了Oracle安裝遇到錯(cuò)誤INS-30131的解決方法,感興趣的小伙伴們可以參考一下2016-07-07ORACLE中鎖住/解鎖統(tǒng)計(jì)信息的操作代碼
從Oracle 10g 開始,Oracle提供了鎖定/解鎖表統(tǒng)計(jì)信息功能,它的目的是阻止數(shù)據(jù)庫(kù)自動(dòng)收集統(tǒng)計(jì)信息,防止可能會(huì)產(chǎn)生/出現(xiàn)的糟糕的計(jì)劃,這篇文章主要介紹了ORACLE中鎖住/解鎖統(tǒng)計(jì)信息的操作代碼,需要的朋友可以參考下2023-09-09Oracle數(shù)據(jù)庫(kù)中的觸發(fā)器詳解
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)中觸發(fā)器的相關(guān)資料,觸發(fā)器也是保護(hù)數(shù)據(jù)完整性的一種重要方法,于存儲(chǔ)過(guò)程不同的是,觸發(fā)器是通過(guò)事件進(jìn)行觸發(fā)被執(zhí)行,存儲(chǔ)過(guò)程需要被調(diào)用執(zhí)行,需要的朋友可以參考下2024-02-02Oracle用PLSQL導(dǎo)出導(dǎo)入dmp表詳細(xì)圖解
dmp是二進(jìn)制文件,可跨平臺(tái)還能包含權(quán)限,效率好,這篇文章主要給大家介紹了關(guān)于Oracle用PLSQL導(dǎo)出導(dǎo)入dmp表的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11Oracle數(shù)據(jù)庫(kù)中通用的函數(shù)實(shí)例詳解
OracleSQL提供了用于執(zhí)行特定操作的專用函數(shù),這些函數(shù)大大增強(qiáng)了SQL語(yǔ)言的功能,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)中通用函數(shù)的相關(guān)資料,需要的朋友可以參考下2022-03-03