You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite递归查询仅执行一步即终止,如何排查解决?

问题原因

你的递归查询核心问题出在递归成员返回的字段不对:

  • 锚点查询返回的是起始用户的login(john的login是'john')
  • 但递归部分返回的是下属的nickname(比如bob的nickname是'b'),而后续递归需要用login去匹配下一层员工的manager字段(steve的manager是'bob',也就是bob的login),这时候orgtree里存的是'b'(nickname),和'bob'(login)不匹配,导致递归到bob就断了,没法找到steve。
修正后的递归查询

要让递归能持续传递用于关联的login值,同时可以顺便带上nickname方便直接输出:

WITH orgtree AS (
  -- 锚点:通过nickname找到起始用户的login和nickname
  SELECT login, nickname 
  FROM users 
  WHERE nickname='j'

  UNION ALL
  
  -- 递归成员:返回下属的login(用于继续递归)和nickname(用于结果)
  SELECT u.login, u.nickname 
  FROM users u
  JOIN orgtree ot ON u.manager = ot.login
)
-- 直接从递归结果中取出所有nickname
SELECT nickname FROM orgtree;
补充说明
  • 执行上述查询会返回包含起始用户在内的所有层级nickname:j、l、b、s
  • 如果不需要包含起始用户本身,只需在最后查询时添加过滤条件:SELECT nickname FROM orgtree WHERE nickname != 'j';

内容的提问来源于stack exchange,提问作者WoJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:33:21