添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
SELECT t3.*
FROM (
         SELECT t1.*, IF ( FIND_IN_SET( parentid, @pids ) > 0, @pids := CONCAT( @pids, ',', dictionary_id ), '0' ) AS is_child
         FROM dictionary AS t1,
              ( SELECT @pids := #{parentId} ) AS t2
         ORDER BY t1.dictionary_id ASC
WHERE t3.is_child != '0' and t3.deleted = 0
然后,使用 UNION ALL 将这个记录和其下级记录合并起来,一直递归下去,直到找到所有下级记录。在上面的语句中,使用了两个 查询 ,第一个 查询 获取 ID 为 1 的记录,第二个 查询 获取 ID 为 1 的记录以及其下级记录。在实际使用时,需要将语句中的 items 替换成实际的表名,将 id、pid、name 替换成实际的字段名,将 1 替换成要 查询 的 ID。在实际使用时,需要将语句中的 items 替换成实际的表名,将 id、pid、name 替换成实际的字段名,将 1 替换成要 查询 的 ID。 DROP TABLE IF EXISTS `tblorg`; CREATE TABLE `tblorg` ( `orgId` varchar(50) NOT NULL, #数据ID `parentOrgI... SELECT @ids AS _ids, ( SELECT @ids := GROUP_CONCAT( pid ) FROM project_grouping WHERE FIND_IN_SET( parent_id, @ids ) ) AS cids, @l := @l + 1 AS LEVEL1 如果当前节点左 节点(cur.left)非空,找到当前节点左 树的最右节点(mostRight): 1)如果该节点的右 节点(mostRight.right)为空,则将其指针指向当前节点(cur),进入左 节点(cur.left)。 2)如果该节点的右 节点(mostRight.right)非空,则将其指针置为空,输出当前节点(cur),进入右 节点(cur.right)。 SELECT * FROM table_name WHERE Id=‘4’ --表的主键ID UNION ALL SELECT T0.* FROM TEMP,table_name T0 WHERE TEMP.Id=T0.ParentId -- 级ID==父级ID SELECT * FROM TEMP; –根据指定节点ID获取所有父节点– WITH TEMP AS SELECT * FROM table_name WHERE Id=‘3 现有一个树状的层级 结构 ,每一个实体都持有一个父节点的信息,在这里姑且认为持有父节点的id。 生成表的语句为: create table test (id int primary key auto_increment, name varchar(10), pid int); 有以下几种解决方案: 一、层数不多的情况下,可以采用left join的方式。以总共四层,寻找二级节点以下节点为例: CREATE DEFINER=`root`@`%` FUNCTION `getParLst`(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);