背景:一張樹狀結構的表,有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