SQL 递归查询解析:获取所有分类及其子分类
这段代码是一个递归查询,用于查询给定 subjectId 的所有分类,包括子分类和孙子分类。具体解析如下:
-
WITH RECURSIVE:这是一个WITH递归查询,用于定义一个公共表达式(CTE)。 -
category_tree(id, name, pid):定义了一个名为category_tree的公共表达式,包含三个列id、name、pid,表示分类的id、名称和父分类id。 -
SELECT id, name, pid FROM tm_subject WHERE id = #{subjectId}:用于查询给定subjectId的分类,作为递归查询的起点。 -
UNION ALL:用于将查询结果与下一步查询的结果进行合并。 -
SELECT c.id, c.name, c.pid FROM tm_subject AS c JOIN category_tree AS ct ON ct.pid = c.id:用于查询与上一步结果中所有分类的id相等的分类,作为下一步递归查询的结果。 -
SELECT * FROM category_tree ORDER BY id ASC:最后的SELECT语句用于查询category_tree中的所有分类,并按照id升序排列。
总体来说,这段代码通过递归查询实现了查询给定 subjectId 的所有分类及其子分类、孙子分类等,输出结果按照分类 id 升序排列。
原文地址: https://www.cveoy.top/t/topic/nlVZ 著作权归作者所有。请勿转载和采集!