1. 程式人生 > >mysql獲取選單下面所有子選單的sql

mysql獲取選單下面所有子選單的sql

select * from (
      select t1.*,
      if(find_in_set(ac_pid, @pids) > 0, @pids := concat(@pids, ',', rc_id), 0) as ischild
      from (
           select * from ".$this->trueTableName." t where t.is_show = 1 order by sort asc,rc_id asc
          ) t1,
          (select @pids := 226) t2
     ) t3 where ischild != 0

裡面替換兩個欄位就好,一個$this->trueTbaleName表明

ac_pid對應的父親id欄位

rc_id 標識id

is_show =1 查詢不隱藏的

排序方式

sort asc 和rc_id asc

226查詢rc_id =226下面所有子選單

方法2:

就是儲存過程和方法

我的是navcat裡面建立的

BEGIN
#Routine body goes here...
drop TEMPORARY TABLE IF EXISTS tmpLst;   
  create TEMPORARY TABLE IF NOT EXISTS tmpLst (

sno INT PRIMARY KEY AUTO_INCREMENT,
id INT,
depth INT
);         
  call router_access_childlist(rootId,0);   
       
  select 
mami_router_access.rc_id,
mami_router_access.ac_pid,
mami_router_access.node_name,
tmpLst.depth
FROM tmpLst,mami_router_access 
WHERE tmpLst.id=channel.rc_id ORDER BY tmpLst.sno;   


END

裡面建立的時候首先rootId   型別的int

儲存的方法名為router_access_childlist