0
点赞
收藏
分享

微信扫一扫

SQL 无限极表递归查询


前言

查询一张无限极表 父子ID

SQL

不包含父类

SELECT A.*
FROM (SELECT * FROM sixs_organization_manage) A,
(SELECT @pv := 1) B
WHERE find_in_set(A.som_parent_id, @pv)
AND length(@pv := concat(@pv, ',', som_id));

释义

-- find_in_set() 查询当前字符串 在目标字符串中位置 没有返回0 第一位返回1
select find_in_set('A', 'A,B,C');
-- concat() concat()函数用于将多个字符串连接起来,形成一个单一的字符串
select concat('A', ',', 'A,B');
-- A,AB
-- length() 获取长度
select length('ABC');

SQL 无限极表递归查询_数据库

包含顶级父类

其实就是单独查询顶级父类然后关联子查询即可

select * from A where id=1
union
递归SQL

问题

  1. 效率问题 find_in_set 影响递归快慢
  2. 主键问题 ID加主键


举报

相关推荐

0 条评论