mysql中使用遞歸查詢所有父級和子級信息

背景:一張樹狀結構的表,有id,parent_id,每條數據通過關聯形成樹狀結構

需求一:根據id查詢所有的父級id

BEGIN
DECLARE fid VARCHAR(100) DEFAULT '';
DECLARE str VARCHAR(100) DEFAULT rootId;

WHILE rootId is not null DO
	set fid = (SELECT parent_id from dict_schoolArea where id = rootId);
	if fid is not null and fid !=0 and fid != 1 THEN
		SET str = CONCAT(str,',',fid);
		set rootId = fid;
	else 
		set rootId = fid;
	end if;
end while;
return str;
end

因爲業務中不需要顯示根節點和1的節點,故加上了   fid !=0 and fid != 1  ;

mapper.xml使用:

  <!-- 根據id獲取所有父級節點id -->
  <select id="getParentIdListById" parameterType="Long" resultType="String">
  	    select getIdofProCityDist(#{id,jdbcType=BIGINT}) from dual
  </select>	

需求二:根據id查詢所有的子節點id

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章