在MySQL中獲取所有子節(jié)點(diǎn),是一個非常常見的操作。下面我們針對這個問題,給出一種比較簡單易用的函數(shù)實現(xiàn)方法。
CREATE FUNCTION get_all_sub_nodes( parent_id INT(11) --傳入父節(jié)點(diǎn)的id ) RETURNS VARCHAR(1000) BEGIN DECLARE node_list VARCHAR(1000); SET node_list = ''; SELECT GROUP_CONCAT(a.id) INTO node_list FROM tree_table a, tree_table b WHERE a.lft BETWEEN b.lft AND b.rgt AND b.id = parent_id; RETURN node_list; END
以上代碼中,我們先在函數(shù)里面聲明一個變量node_list,用來保存我們要查找的所有子節(jié)點(diǎn)的id。接下來,我們使用GROUP_CONCAT函數(shù)來將所有符合條件的id值轉(zhuǎn)換為一個字符串并賦值給node_list。
其中,我們定義的這個函數(shù)的參數(shù)parent_id即為傳入的父節(jié)點(diǎn)的id,這個參數(shù)會通過WHERE子句中的b.id = parent_id進(jìn)行篩選,從而保證我們只查詢出當(dāng)前父節(jié)點(diǎn)的所有子節(jié)點(diǎn)。
最后,我們將獲取到的所有子節(jié)點(diǎn)id組成的字符串返回給調(diào)用它的程序。
上一篇動畫css制作