sql使用with子句递归查询能指定查询的层级范围么

如何只查询出来从根到指定层级的所有节点,使用with是查询出全部节点,中间能加逻辑判断吗?还是只能用临时表实现指定层级的查询?

阅读 4.2k
1 个回答

在查询结果中,可以增加level列,然后在最后的where语句中进行过滤。

WITH org AS (
 SELECT id, name, pid, 1 AS level
 FROM t1
 WHERE pid = 'A'
 UNION ALL
 SELECT t1.id, t1.name, t1.pid, t2.level + 1 AS level
 FROM tmp_t1 t1 INNER JOIN org t2
   ON t1.pid = t2.id
)
SELECT
*
FROM org
where level <=2
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进