一句sql实现mysql递归查询
时间: 2023-05-16 15:02:33 浏览: 321
在MySQL中,可以使用WITH RECURSIVE语句实现递归查询。WITH RECURSIVE语句由两部分组成,第一部分是递归关系的初始查询,第二部分是递归查询的联结操作。
举个例子,假设要查询一个树形结构的组织架构,该表中包含了每个部门的ID、名称以及父部门ID。首先,需要一个初始查询,用于从根节点开始逐层查询子节点。具体代码如下:
WITH RECURSIVE org_tree(id, name, parent_id) AS
(
SELECT id, name, parent_id
FROM org
WHERE parent_id IS NULL -- 根节点
UNION ALL
SELECT o.id, o.name, o.parent_id
FROM org o
JOIN org_tree t ON t.id = o.parent_id -- 递归查询
)
SELECT * FROM org_tree;
上面的代码中,第一部分查询了根节点。在第二部分中,通过联结操作递归查询下一层的子节点。其中,ORG_TREE是临时表的名称,ID、NAME、PARENT_ID是表的字段名称。
此时,就可以从根节点开始递归查询所有子节点的信息了。这条SQL语句非常简单,并且非常高效。如果没有使用递归查询,可能需要多次连接数据库或者使用嵌套查询才能得到同样的结果。
阅读全文