Sobre a consulta recursiva do MySQL, consulte todas as classes pai do ID da subclasse, consulte todas as subclasses do ID da classe pai

1. Cenários de negócios

A empresa precisa consultar as informações do nó raiz de acordo com um nó filho. Muitas vezes é usado para fazer classificação infinita.

1. Verifique todos os departamentos pais por ID do departamento filho

O código é o seguinte (exemplo):

SELECT T2.*
   FROM (
   SELECT
   @r AS _id,
   (SELECT @r := parent_id FROM tbl_app_dept WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl
   FROM
   (SELECT @r := '232', @l := 0) vars, tbl_app_dept h WHERE @r <> 0) T1
   JOIN tbl_app_dept T2 ON T1._id = T2.id
   ORDER BY T1.lvl DESC

2. Oracle Connect por implementação

#由叶子节点查根节点
select * from table start with id=1 connect by id = prior p_id
#由父节点查叶子节点
select * from table start with p_id=4 connect by prior id = p_id

3. Procedimento armazenado para visualizar todos os IDs de subdepartamentos

CREATE DEFINER=`root`@`%` FUNCTION `test_db`.`getChildList`(rootId varchar(1000)) RETURNS mediumtext CHARSET utf8
    DETERMINISTIC
    COMMENT '查询所有子部门id'
BEGIN
    DECLARE sTemp MEDIUMTEXT;
       DECLARE sTempChd MEDIUMTEXT;

       SET sTemp = '$';
       SET sTempChd =cast(rootId as CHAR);

       WHILE sTempChd is not null DO
         SET sTemp = concat(sTemp,',',sTempChd);
         SELECT group_concat(dept_id) INTO sTempChd FROM tbl_app_dept where FIND_IN_SET(parent_id,sTempChd)>0;
       END WHILE;
       RETURN sTemp;
END

おすすめ

転載: blog.csdn.net/myyw001/article/details/131979017