树形结构查询所有子孙集sql

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
     ) t3
WHERE t3.is_child != '0' and t3.deleted = 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果您要在MySQL查询树形结构的某一个汇总值,可以使用递归查询(Recursive Query)来实现。递归查询是指在查询中嵌套使用自身的查询,从而实现对树形结构的遍历操作。 假设您的树形结构数据模型是这样的: ```sql CREATE TABLE category ( id INT PRIMARY KEY, name VARCHAR(100), parent_id INT ); INSERT INTO category VALUES (1, '电器', NULL), (2, '手机', 1), (3, '电视', 1), (4, '华为', 2), (5, '小米', 2), (6, '索尼', 3), (7, '三星', 3), (8, '笔记本', 1), (9, 'ThinkPad', 8), (10, '戴尔', 8); ``` 现在,假设您要查询所有属于“手机”类别的商品的库存总量,可以使用以下SQL语句: ```sql WITH RECURSIVE sub_categories AS ( SELECT id FROM category WHERE name = '手机' UNION ALL SELECT c.id FROM category c JOIN sub_categories sc ON c.parent_id = sc.id ) SELECT SUM(stock) AS total_stock FROM product WHERE category_id IN (SELECT id FROM sub_categories); ``` 上述SQL语句使用了WITH RECURSIVE子句定义了一个递归查询查询出了所有属于“手机”类别的子孙节点的ID。然后,在主查询中使用了SUM函数计算所有符合条件的商品的库存总量。 需要注意的是,上述查询中用到了两个表:`category`表和`product`表,其中`category`表存储了树形结构的数据,而`product`表存储了商品信息和库存信息。在查询时需要将两个表进行JOIN操作,并根据`category`表中的层级关系来查询出符合条件的所有商品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值