Mysql無限遞迴樹(由子找父資料父名稱)
阿新 • • 發佈:2019-01-30
接到一個需求,就是訂單找找到它的所有推廣關係,把推廣人的名字按層級匯出來,找了好久,mysql沒有支援無限遞迴樹的函式,查了資料轉換為自己要的查詢,瞭解了一次mysql的函式,感覺棒棒噠
我的需求查詢到的結果DROP FUNCTION IF EXISTS getParentList; CREATE FUNCTION `getParentList`(rootId INT) RETURNS varchar(1000) BEGIN #定義變數 DECLARE sParentList varchar(1000); DECLARE sParentTemp varchar(1000); DECLARE sParentName varchar(1000); DECLARE sParentTmpName varchar(1000); DECLARE sParentTmpMobile varchar(1000); #將入參強制轉換為字串 SET sParentTemp = cast(rootId as CHAR); WHILE sParentTemp is not null DO #當條件為不為空的時候執行(找不到上級就可以執行) SET sParentTmpName = ( SELECT true_name FROM zjj_user.user_profile where user_id = sParentTemp ); #查詢你需要的欄位 IF (sParentList is not null) THEN #判斷只有一層的關係 SET sParentList = concat(sParentTemp,',',sParentList); SET sParentName = CONCAT(sParentTmpName,',',sParentName); #將你需要輸出的欄位進行拼接 ELSE SET sParentList = concat(sParentTemp); SET sParentName = concat(sParentTmpName); END IF; SELECT group_concat(p_uid) INTO sParentTemp FROM user_introduce_relation where user_id = sParentTemp; #將變數替換成找到的值 END WHILE; RETURN sParentName; #返回需要的 END; select getParentList(1123);