CREATE DEFINER=`root`@`%` FUNCTION `getoid`(rootId INT) RETURNS varchar(1000) CHARSET utf8
READS SQL DATA
BEGIN
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
SET sTemp = '$';
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,',',sTempChd);
SELECT group_concat(parens_id) INTO sTempChd FROM p_organization where FIND_IN_SET(oid,sTempChd)>0;
END WHILE;
RETURN sTemp;
select getoid(1)
返回当前和父级的id
代码是自己项目中的部分代码,对于小白可能不太友好,容易看不太懂,代码其实不是很重要,重要的是设计思路,比如我们做的java三大排序算法的时候,和打印菱形、五角星图案时候,只要自己明白的了设计思路,代码写起来就容易多了。
下面代码实现的思路还是,通过不断循环自身的方法,知道下级没有数据或者为null时,结局遍历循环。
树形结构数据中,根据父类id获取子孙后代id集合和 树形结构数据还原成普通list集合方法
*获得下级子类id集合
建表(只做示例,可以自己扩展其他字段):
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 COMM...
DELIMITER $
DROP PROCEDURE if EXISTS getParLst;
CREATE PROCEDURE getParLst(IN rootId VARCHAR(50),OUT sTemp VARCHAR(1000))
BEGIN
DECLARE sTempPar VARCHAR(1000);
SET sTemp = '';
SET sTempPar =rootId;
#循环递归
WHILE sTempPar
sql根据一个子节点ID查询父级信息
文章目录sql根据一个子节点ID查询父级信息前言一、问题描述?二、数据库相关设计1.数据结构设计2.部分数据3.sql 根据子id 查询父级信息sql 脚本4.可能用到(mybatis 大于等于小于等于的写法)总结
上次写了根据一个ID,查询下级用户信息,本次反着来,通过一个子ID查询父级的信息。
一、问题描述?
查询物品分类信息,需要查询物品的一级分类,二级分类(我做的是商品二级分类信息)
解决方法:
第一种是代码,递归。
第二种就是用sql解决。
CREATE TABLE `tree_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 插入记录
INSERT INTO `tree_table`(`id`, `pa
CREATE TABLE `treetype` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) DEFAULT NULL,
`fid` INT DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=13 DEFAULT CHARSET=ut
select id from sys_dict start with id='5' connect by prior fid=id union (select id from sys_dict start with id='5' connect by prior id=fid)
select id from sys_dict start with id='5' co
SELECT
@r AS _id,
( SELECT @r := parent_id FROM book_menu WHERE menu_id = _id ) AS parent_id,
@s := @s + 1 AS sort
( SELECT @r := 9, @s := 0 ) temp,
book_menu
WHERE
JOIN book_menu t2 ON t1._id = t2.menu_id
book_menu 表
SELECT
@r AS _id,
(SELECT @r := FParentID FROM t_module_checkin_class WHERE FID = _id) AS FParentID,
@l := @l + 1 AS lvl
(SELECT @r := 6, @l := 0) vars,
t_module_checkin_clas