mysql中的遞歸

別人問的一個需求:mysql

 
數據庫裏面保存的是父子關係結構:

 

展現出來的須要根據子類一直查到頂類後將名稱所有放一個字段裏面,以下:  
好比輸入的code是1099,名稱要顯示 配料/花椒/ces
 
 
這裏使用到了遞歸,可是mysql自己沒有遞歸查詢,因此這裏使用了function函數:
drop function if exists getName;
create FUNCTION getName(v_code int) returns varchar(10)
begin 

    declare v_name varchar(10);
    declare v_name2 varchar(10);

    set v_name='';
    set v_name2='';
    
    repeat
        select `name`,`parent_code` into v_name,v_code from material_type where `code` = v_code limit 1;
        set v_name2 = concat_ws('/',v_name,v_name2);
    until v_code = 0 end repeat;    
    
    return v_name2;
    
end;

 

而後以下查詢操做:sql

select  code,name,parent_code,getName(code) from material_type;

結果顯示以下:數據庫

注意:這裏的頂層跟節點的code必須是0函數

相關文章
相關標籤/搜索