赞
踩
一张school表,字段有主键id和父层级id,大学是最高的一个父节点,降序排序就是:大学>高中>小学>幼儿园,根据mysql8递归函数,可实现根据不同节点向上或者向下查询所有有关联的节点。
CREATE TABLE `school` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`parent_id` int(11) NOT NULL COMMENT '父层级id',
`sname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `test`.`school`(`id`, `parent_id`, `sname`) VALUES (1, -1, '大学');
INSERT INTO `test`.`school`(`id`, `parent_id`, `sname`) VALUES (2, 1, '高中');
INSERT INTO `test`.`school`(`id`, `parent_id`, `sname`) VALUES (3, 2, '小学');
INSERT INTO `test`.`school`(`id`, `parent_id`, `sname`) VALUES (4, 3, '幼儿园');
WITH RECURSIVE r_t AS ( SELECT s1.id, s1.parent_id, s1.sname FROM school s1 WHERE s1.id = 1 UNION ALL SELECT s2.id, s2.parent_id, s2.sname FROM school s2 INNER JOIN r_t ON r_t.id = s2.parent_id ) SELECT * FROM r_t;
WITH RECURSIVE r_t AS ( SELECT s1.id, s1.parent_id, s1.sname FROM school s1 WHERE s1.id = 4 UNION ALL SELECT s2.id, s2.parent_id, s2.sname FROM school s2 INNER JOIN r_t ON r_t.parent_id = s2.id ) SELECT * FROM r_t;
就
先
说
到
这
\color{#008B8B}{ 就先说到这}
就先说到这
在
下
A
p
o
l
l
o
\color{#008B8B}{在下Apollo}
在下Apollo
一
个
爱
分
享
J
a
v
a
、
生
活
的
小
人
物
,
\color{#008B8B}{一个爱分享Java、生活的小人物,}
一个爱分享Java、生活的小人物,
咱
们
来
日
方
长
,
有
缘
江
湖
再
见
,
告
辞
!
\color{#008B8B}{咱们来日方长,有缘江湖再见,告辞!}
咱们来日方长,有缘江湖再见,告辞!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。