JeeGit

 找回密码
 立即注册
搜索
查看: 131|回复: 9

MYSQL树结构,查询所有子元素ID,函数

[复制链接]

79

主题

123

帖子

534

积分

高级会员

Rank: 4

积分
534
发表于 2020-12-2 11:24:50 | 显示全部楼层 |阅读模式
回复

使用道具 举报

79

主题

123

帖子

534

积分

高级会员

Rank: 4

积分
534
 楼主| 发表于 2020-12-2 12:17:30 | 显示全部楼层
回复

使用道具 举报

79

主题

123

帖子

534

积分

高级会员

Rank: 4

积分
534
 楼主| 发表于 2020-12-2 19:43:10 | 显示全部楼层
回复

使用道具 举报

79

主题

123

帖子

534

积分

高级会员

Rank: 4

积分
534
 楼主| 发表于 2020-12-2 20:08:12 | 显示全部楼层

SELECT dict_id,parent_id,dict_name FROM jt_sys_dict  ;


SELECT GROUP_CONCAT(dict_id) AS parentids
FROM jt_sys_dict
WHERE parent_id=3



SELECT * FROM jt_sys_dict
WHERE FIND_IN_SET(parent_id,'1,2')

回复

使用道具 举报

79

主题

123

帖子

534

积分

高级会员

Rank: 4

积分
534
 楼主| 发表于 2020-12-2 21:01:56 | 显示全部楼层
DELIMITER $$

USE `jeegit`$$

DROP FUNCTION IF EXISTS `getSubNodes`$$

CREATE DEFINER=`root`@`%` FUNCTION `getSubNodes`(param_id  INT,key_name VARCHAR) RETURNS VARCHAR(1000) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci
    NO SQL
BEGIN
#输入I_ID 输出此I_ID下的所有子节点(只有一级)

  DECLARE strSubIds VARCHAR(100);

  DECLARE strPid VARCHAR(100);

  SET strSubIds = '$';

  SET strPid =CAST(param_id AS CHAR);

  SELECT GROUP_CONCAT(key_name) INTO strSubIds FROM jt_sys_dict WHERE parent_id=strPid;

  RETURN strSubIds;
END$$

DELIMITER ;
回复

使用道具 举报

79

主题

123

帖子

534

积分

高级会员

Rank: 4

积分
534
 楼主| 发表于 2020-12-3 10:15:10 | 显示全部楼层
mysql 判断是否是叶子节点

  1. UPDATE
  2.   `js_sys_menu`
  3. SET
  4.   tree_leaf =
  5.   (SELECT
  6.     tree_leaf
  7.   FROM
  8.     (SELECT
  9.       (
  10.         CASE
  11.           WHEN COUNT(1) > 0
  12.           THEN '0'
  13.           ELSE '1'
  14.         END
  15.       ) tree_leaf
  16.     FROM
  17.       `js_sys_menu`
  18.     WHERE STATUS = '0'
  19.       AND parent_code = ?) a)
  20. WHERE `menu_code` = ?
复制代码
回复

使用道具 举报

79

主题

123

帖子

534

积分

高级会员

Rank: 4

积分
534
 楼主| 发表于 2020-12-3 10:16:07 | 显示全部楼层
SELECT
    tree_leaf
  FROM
    (SELECT
      (
        CASE
          WHEN COUNT(1) > 0
          THEN '0'
          ELSE '1'
        END
      ) tree_leaf
    FROM
      `js_sys_menu`
    WHERE STATUS = '0'
      AND parent_code = ?
回复

使用道具 举报

79

主题

123

帖子

534

积分

高级会员

Rank: 4

积分
534
 楼主| 发表于 2020-12-3 11:02:34 | 显示全部楼层












SELECT dict_id AS dict_id,parent_id,levels , parent_ids, (SELECT (CASE WHEN COUNT(s.dict_id) > 0 THEN '0' ELSE '1' END)  FROM `jt_sys_dict` AS s WHERE  s.parent_id =a.dict_id) AS is_leaf
FROM (
     SELECT dict_id,parent_id,
     @le:= IF (parent_id = 0 ,0,  
         IF( LOCATE( CONCAT('|',parent_id,':'),@pathlevel)   > 0  ,      
                  SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',parent_id,':'),-1),'|',1) +1
        ,@le+1) ) levels
     , @pathlevel:= CONCAT(@pathlevel,'|',dict_id,':', @le ,'|') pathlevel
      , @pathnodes:= IF( parent_id =0,',0',
           CONCAT_WS(',',
           IF( LOCATE( CONCAT('|',parent_id,':'),@pathall) > 0  ,
               SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',parent_id,':'),-1),'|',1)
              ,@pathnodes ) ,parent_id  ) )parent_ids
    ,@pathall:=CONCAT(@pathall,'|',dict_id,':', @pathnodes ,'|') pathall
        FROM  `jt_sys_dict`,
    (SELECT @le:=0,@pathlevel:='', @pathall:='',@pathnodes:='') vv
    ORDER BY  parent_id,dict_id
    ) AS a

ORDER BY dict_id


回复

使用道具 举报

79

主题

123

帖子

534

积分

高级会员

Rank: 4

积分
534
 楼主| 发表于 2020-12-6 12:14:32 | 显示全部楼层
SELECT a.*,(SELECT (CASE WHEN COUNT(s.dict_id) > 0 THEN '0' ELSE '1' END)  FROM `jt_sys_dict` AS s WHERE  s.parent_id =a.dict_id) AS is_leaf,
@le:= IF (parent_id = 0 ,0,IF( LOCATE( CONCAT('|',parent_id,':'),@pathlevel)> 0,
SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',parent_id,':'),-1),'|',1) +1,@le+1) ) levels,
@pathlevel:= CONCAT(@pathlevel,'|',dict_id,':', @le ,'|') pathlevel,
@pathnodes:= IF( parent_id =0,',0', CONCAT_WS(',',IF( LOCATE( CONCAT('|',parent_id,':'),@pathall) > 0,
SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',parent_id,':'),-1),'|',1),
@pathnodes ) ,parent_id  ) )parent_ids,@pathall:=CONCAT(@pathall,'|',dict_id,':', @pathnodes ,'|') pathall FROM  `jt_sys_dict` a

ORDER BY  parent_id,dict_id;
SELECT @le:=0,@pathlevel:='', @pathnodes:='',@pathall:='';

SET SESSION FOREIGN_KEY_CHECKS=0;
回复

使用道具 举报

79

主题

123

帖子

534

积分

高级会员

Rank: 4

积分
534
 楼主| 发表于 2020-12-8 11:45:39 | 显示全部楼层
SELECT (SELECT (CASE WHEN COUNT(s.dict_id) > 0 THEN '0' ELSE '1' END)  FROM `jt_sys_dict` AS s WHERE  s.parent_id =a.dict_id) AS is_leaf,




@jsort:=CONCAT(sort,',') ,
@jsorts:= CONCAT(CONCAT(sort,','),sort,':', CONCAT(sort,',')) sorts,
@le:= IF (parent_id = 0 ,0,IF( LOCATE( CONCAT('|',parent_id,':'),@pathlevel)> 0,
SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',parent_id,':'),-1),'|',1) +1,@le+1) ) levels,
@pathlevel:= CONCAT(@pathlevel,'|',dict_id,':', @le ,'|') pathlevel,
@pathnodes:= IF( parent_id =0,'0', CONCAT_WS(',',IF( LOCATE( CONCAT('|',parent_id,':'),@pathall) > 0,
SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',parent_id,':'),-1),'|',1),
@pathnodes ) ,parent_id  ) )parent_ids,@pathall:=CONCAT(@pathall,'|',dict_id,':', @pathnodes ,'|') pathall FROM  `jt_sys_dict` a
ORDER BY  parent_id,dict_id;
SELECT @le:=0,@pathlevel:='', @pathnodes:='',@pathall:='';






SELECT (SELECT (CASE WHEN COUNT(s.dict_id) > 0 THEN '0' ELSE '1' END)  FROM `jt_sys_dict` AS s WHERE  s.parent_id =a.dict_id) AS is_leaf,


@jsorts:= CONCAT(CONCAT(sort,','),sort,':', CONCAT(sort,',')) sorts,
@jnames:= CONCAT(CONCAT(dict_name,','),dict_name,':', CONCAT(dict_name,',')) parentNames,
@le:= IF (parent_id = 0 ,0,IF( LOCATE( CONCAT('|',parent_id,':'),@pathlevel)> 0,
SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',parent_id,':'),-1),'|',1) +1,@le+1) ) levels,
@pathlevel:= CONCAT(@pathlevel,'|',dict_id,':', @le ,'|') pathlevel,
@pathnodes:= IF( parent_id =0,'0', CONCAT_WS(',',IF( LOCATE( CONCAT('|',parent_id,':'),@pathall) > 0,
SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',parent_id,':'),-1),'|',1),
@pathnodes ) ,parent_id  ) )parent_ids,@pathall:=CONCAT(@pathall,'|',dict_id,':', @pathnodes ,'|') pathall FROM  `jt_sys_dict` a
ORDER BY  parent_id,dict_id;
SELECT @le:=0,@pathlevel:='', @pathnodes:='',@pathall:='',@jsorts:='';



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|JeeGit

GMT+8, 2021-1-17 21:16 , Processed in 0.069560 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表