这段代码是一个递归查询,用于查询给定 subjectId 的所有分类,包括子分类和孙子分类。具体解析如下:

  1. WITH RECURSIVE:这是一个 WITH 递归查询,用于定义一个公共表达式(CTE)。

  2. category_tree(id, name, pid):定义了一个名为 category_tree 的公共表达式,包含三个列 idnamepid,表示分类的 id、名称和父分类 id

  3. SELECT id, name, pid FROM tm_subject WHERE id = #{subjectId}:用于查询给定 subjectId 的分类,作为递归查询的起点。

  4. UNION ALL:用于将查询结果与下一步查询的结果进行合并。

  5. SELECT c.id, c.name, c.pid FROM tm_subject AS c JOIN category_tree AS ct ON ct.pid = c.id:用于查询与上一步结果中所有分类的 id 相等的分类,作为下一步递归查询的结果。

  6. SELECT * FROM category_tree ORDER BY id ASC:最后的 SELECT 语句用于查询 category_tree 中的所有分类,并按照 id 升序排列。

总体来说,这段代码通过递归查询实现了查询给定 subjectId 的所有分类及其子分类、孙子分类等,输出结果按照分类 id 升序排列。

SQL 递归查询解析:获取所有分类及其子分类

原文地址: https://www.cveoy.top/t/topic/nlVZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录