1. 程式人生 > 資料庫 >Mysql根據某層部門ID查詢所有下級多層子部門的示例

Mysql根據某層部門ID查詢所有下級多層子部門的示例

模擬表和資料指令碼

複製以下sql語句生成一個叫sys_dept的表和插入若干構造好的有層級關係的資料,直接複製執行就ok

DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept` (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部門編號',`p_id` int(11) DEFAULT NULL COMMENT '父級部門編號',`title` varchar(255) DEFAULT NULL COMMENT '父級部門名稱',`is_open` int(11) DEFAULT NULL COMMENT '是否展開(0-展開,1-不展開)',`address` varchar(255) DEFAULT NULL COMMENT '部門地址',`create_time` datetime DEFAULT NULL COMMENT '建立時間',`remark` varchar(255) DEFAULT NULL COMMENT '備註',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO sys_dept (p_id,title,is_open,address,create_time,remark) VALUES 
(0,'總經辦',1,'深圳','2019-04-10 14:06:32.000','大BOSS'),(1,'銷售部','武漢','程式設計師屌絲'),'運營部','無'),'生產部',(2,'銷售一部','銷售一部'),'銷售二部','銷售二部'),'銷售三部','廣州','銷售三部'),'銷售四部','銷售四部'),'銷售五部','銷售五部'),(3,'運營一部','運營一部'),'運營二部','運營二部'),'運營三部','運營三部'),'運營四部','運營四部'),'運營五部','運營五部'),(4,'生產一部','2019-11-23 09:50:23.000','生產一部'),'生產二部','生產二部'),'生產三部','生產三部'),(5,'銷售一部一組','銷售一部一組'),'銷售一部二組','銷售一部二組'),'銷售一部三組','銷售一部三組'),(6,'銷售二部一組','銷售二部一組'),'銷售二部二組','銷售二部二組'),(17,'生產三部一組','生產三部一組'),'生產三部二組','生產三部二組'),'生產三部三組','生產三部三組')
;

根據部門ID查詢所有子部門

select
 id,title
from
 (
 select
 t1.id,t1.title,if(find_in_set(p_id,@pids) > 0,@pids := concat(@pids,',id),0) as ischild
 from
 (
 select
  id,p_id,title
 from
  ssmdemo.sys_dept t
 order by
  p_id,id ) t1,(
  select @pids := 17) t2 ) t3
where
 ischild != 0

其中@pids := 17的17就是要查詢的部門ID

到此這篇關於Mysql根據某層部門ID查詢所有下級多層子部門的示例的文章就介紹到這了,更多相關Mysql ID查詢所有下級多層子部門內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!