很感謝大神進來。
我下面代碼有個問題。要一直持續 回圈下去。 不知道怎么寫了。 這個我只寫到了5級。 但實際情況可能有20級。。。感謝大神幫我解決下啊。謝謝。
SELECT id,hhr_name,parent_id,tjr_id FROM gbi_hhr WHERE id = 90
OR
id IN ((SELECT id FROM gbi_hhr WHERE tjr_id = 90 AND sf_type ='戰略') )
OR
id IN (SELECT id FROM gbi_hhr WHERE sf_type != '戰略' AND tjr_id IN (SELECT id FROM gbi_hhr WHERE id IN ((SELECT id FROM gbi_hhr WHERE tjr_id = 90 AND sf_type ='戰略') )) )
OR
id IN (SELECT id FROM gbi_hhr WHERE sf_type != '戰略' AND tjr_id IN (SELECT id FROM gbi_hhr WHERE sf_type != '戰略' AND tjr_id IN (SELECT id FROM gbi_hhr WHERE id IN ((SELECT id FROM gbi_hhr WHERE tjr_id = 90 AND sf_type ='戰略') )) ) )
OR
id IN (SELECT id FROM gbi_hhr WHERE sf_type != '戰略' AND tjr_id IN (SELECT id FROM gbi_hhr WHERE sf_type != '戰略' AND tjr_id IN (SELECT id FROM gbi_hhr WHERE sf_type != '戰略' AND tjr_id IN (SELECT id FROM gbi_hhr WHERE id IN ((SELECT id FROM gbi_hhr WHERE tjr_id = 90 AND sf_type ='戰略') ))) ) )
uj5u.com熱心網友回復:
用遞回試試唄uj5u.com熱心網友回復:
@stelf 感謝你的回答。 遞回 怎么寫。可以給我個 示例代碼嗎。 謝謝。 剛剛學這個。不太懂。
uj5u.com熱心網友回復:
你這個代碼設計思路有嚴重問題,五級是啥概念,你算一下:假設你有100條記錄符合那要執行100x100x100x100x100次。不明白你的思路是啥。幫你簡化第二段:id IN ((SELECT id FROM gbi_hhr WHERE tjr_id = 90 AND sf_type ='戰略') )這條可以簡化為:tjr_id = 90 AND sf_type ='戰略'其他的你自己弄嘛。uj5u.com熱心網友回復:
好的。非常感謝。我的本意是想查詢:遞回查詢所有父子節點(往下查詢所有。就是想查詢他的下面的所有團隊的成員出來,然后統計他們的業績。再計算團隊獎勵。他們下面的團隊可能會有N層。這樣的。另外還有一些條件不能享受。)
uj5u.com熱心網友回復:
不知道層數只能只能使用函式實作。變個遞回函式就行了。
uj5u.com熱心網友回復:
mysql不支持遞回型別的查詢陳述句,只能編函式給你個函式例子:DROP FUNCTION IF EXISTS queryChildrenAreaInfo;
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)>0;
END WHILE;
RETURN sTemp;
END;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/48416.html
標籤:MySQL
上一篇:資料庫基礎知識
下一篇:卸載mysql
