溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在Mysql中根據(jù)ID查詢所有下級(jí)

發(fā)布時(shí)間:2020-12-30 14:58:00 來(lái)源:億速云 閱讀:513 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)怎么在Mysql中根據(jù)ID查詢所有下級(jí),小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

模擬表和數(shù)據(jù)腳本

復(fù)制以下sql語(yǔ)句生成一個(gè)叫sys_dept的表和插入若干構(gòu)造好的有層級(jí)關(guān)系的數(shù)據(jù),直接復(fù)制執(zhí)行就ok

DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept` (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部門編號(hào)',
 `p_id` int(11) DEFAULT NULL COMMENT '父級(jí)部門編號(hào)',
 `title` varchar(255) DEFAULT NULL COMMENT '父級(jí)部門名稱',
 `is_open` int(11) DEFAULT NULL COMMENT '是否展開(kāi)(0-展開(kāi),1-不展開(kāi))',
 `address` varchar(255) DEFAULT NULL COMMENT '部門地址',
 `create_time` datetime DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
 `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,'總經(jīng)辦',1,'深圳','2019-04-10 14:06:32.000','大BOSS')
,(1,'銷售部',0,'武漢','2019-04-10 14:06:32.000','程序員屌絲')
,(1,'運(yùn)營(yíng)部',0,'武漢','2019-04-10 14:06:32.000','無(wú)')
,(1,'生產(chǎn)部',0,'武漢','2019-04-10 14:06:32.000','無(wú)')
,(2,'銷售一部',0,'武漢','2019-04-10 14:06:32.000','銷售一部')
,(2,'銷售二部',0,'武漢','2019-04-10 14:06:32.000','銷售二部')
,(2,'銷售三部',0,'廣州','2019-04-10 14:06:32.000','銷售三部')
,(2,'銷售四部',0,'廣州','2019-04-10 14:06:32.000','銷售四部')
,(2,'銷售五部',0,'廣州','2019-04-10 14:06:32.000','銷售五部')
,(3,'運(yùn)營(yíng)一部',0,'武漢','2019-04-10 14:06:32.000','運(yùn)營(yíng)一部')
,(3,'運(yùn)營(yíng)二部',0,'武漢','2019-04-10 14:06:32.000','運(yùn)營(yíng)二部')
,(3,'運(yùn)營(yíng)三部',0,'武漢','2019-04-10 14:06:32.000','運(yùn)營(yíng)三部')
,(3,'運(yùn)營(yíng)四部',0,'武漢','2019-04-10 14:06:32.000','運(yùn)營(yíng)四部')
,(3,'運(yùn)營(yíng)五部',0,'武漢','2019-04-10 14:06:32.000','運(yùn)營(yíng)五部')
,(4,'生產(chǎn)一部',1,'深圳','2019-11-23 09:50:23.000','生產(chǎn)一部')
,(4,'生產(chǎn)二部',1,'深圳','2019-11-23 09:50:23.000','生產(chǎn)二部')
,(4,'生產(chǎn)三部',1,'深圳','2019-11-23 09:50:23.000','生產(chǎn)三部')
,(5,'銷售一部一組',1,'深圳','2019-11-23 09:50:23.000','銷售一部一組')
,(5,'銷售一部二組',1,'深圳','2019-11-23 09:50:23.000','銷售一部二組')
,(5,'銷售一部三組',1,'深圳','2019-11-23 09:50:23.000','銷售一部三組')
,(6,'銷售二部一組',1,'深圳','2019-11-23 09:50:23.000','銷售二部一組')
,(6,'銷售二部二組',1,'深圳','2019-11-23 09:50:23.000','銷售二部二組')
,(17,'生產(chǎn)三部一組',1,'深圳','2019-11-23 09:50:23.000','生產(chǎn)三部一組')
,(17,'生產(chǎn)三部二組',1,'深圳','2019-11-23 09:50:23.000','生產(chǎn)三部二組')
,(17,'生產(chǎn)三部三組',1,'深圳','2019-11-23 09:50:23.000','生產(chǎn)三部三組')
;

根據(jù)部門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中根據(jù)ID查詢所有下級(jí),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI