mysql查詢子節點的方法:首先創建menu表,并插入數據;然后使用語句進行查詢,代碼為【select id from(select t1.id,if(find_in_set(parent_id, @pids) > 0……)】。
更多相關免費學習推薦:mysql教程(視頻)
mysql查詢子節點的方法:
創建menu表:
CREATE?TABLE?`menu`?( ??`id`?int(11)?NOT?NULL?AUTO_INCREMENT?COMMENT?'菜單id', ??`parent_id`?int(11)?DEFAULT?NULL?COMMENT?'父節點id', ??`menu_name`?varchar(128)?DEFAULT?NULL?COMMENT?'菜單名稱', ??`menu_url`?varchar(128)?DEFAULT?''?COMMENT?'菜單路徑', ??`status`?tinyint(3)?DEFAULT?'1'?COMMENT?'菜單狀態?1-有效;0-無效', ??PRIMARY?KEY?(`id`) )?ENGINE=InnoDB?AUTO_INCREMENT=12212?DEFAULT?CHARSET=utf8;
插入數據:
INSERT?INTO?`menu`?VALUES?('0',?null,?'菜單0',?'?',?'1'); INSERT?INTO?`menu`?VALUES?('1',?'0',?'菜單1',?'',?'1'); INSERT?INTO?`menu`?VALUES?('11',?'1',?'菜單11',?'',?'1'); INSERT?INTO?`menu`?VALUES?('12',?'1',?'菜單12',?'',?'1'); INSERT?INTO?`menu`?VALUES?('13',?'1',?'菜單13',?'',?'1'); INSERT?INTO?`menu`?VALUES?('111',?'11',?'菜單111',?'',?'1'); INSERT?INTO?`menu`?VALUES?('121',?'12',?'菜單121',?'',?'1'); INSERT?INTO?`menu`?VALUES?('122',?'12',?'菜單122',?'',?'1'); INSERT?INTO?`menu`?VALUES?('1221',?'122',?'菜單1221',?'',?'1'); INSERT?INTO?`menu`?VALUES?('1222',?'122',?'菜單1222',?'',?'1'); INSERT?INTO?`menu`?VALUES?('12211',?'1222',?'菜單12211',?'',?'1');
?得到的目錄結構如下圖所示:
查詢? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?先貼出sql語句:
select?id?from?( ??????????????select?t1.id, ??????????????if(find_in_set(parent_id,?@pids)?>?0,?@pids?:=?concat(@pids,?',',?id),?0)?as?ischild ??????????????from?( ???????????????????select?id,parent_id?from?re_menu?t?where?t.status?=?1?order?by?parent_id,?id ??????????????????)?t1, ??????????????????(select?@pids?:=?要查詢的菜單節點?id)?t2 ?????????????)?t3?where?ischild?!=?0
?比如,要查詢菜單節點12的所有子節點,則查處的結果為:
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦