gpt4 book ai didi

sql - sqlite3 上的基本递归查询?

转载 作者:IT王子 更新时间:2023-10-29 06:17:26 26 4
gpt4 key购买 nike

我有一个简单的 sqlite3 表,如下所示:

Table: Part
Part SuperPart
wk0Z wk00
wk06 wk02
wk07 wk02
eZ01 eZ00
eZ02 eZ00
eZ03 eZ01
eZ04 eZ01

我需要运行递归查询来查找给定 SuperPart 及其所有子部分的所有对。所以假设我有 eZ00。 eZ00 是 eZ01 的超部分,eZ01 是 eZ03 的超部分。结果不仅必须包括 (eZ00, eZ01) 和 (eZ01 和 eZ03) 对,还必须包括 (eZ00, eZ03) 对。

我知道还有其他定义表格的方法,但我别无选择。我知道如果我知道我的树的深度我可以使用多个联合,但我不会总是知道我想去多深。有像 WITH RECURSIVE 或什至只是 WITH (,,) AS x 这样的东西会有所帮助,但对于我搜索过的内容,这在 sqlite 中是不可能的,对吧?

有没有办法在 sqlite3 中执行此递归查询?

更新:

做这道题的时候,SQLite不支持递归查询,但是as stated by @lunicon,SQLite从3.8.3 sqlite.org/lang_with.html开始支持递归CTE

最佳答案

如果您有幸使用 SQLite 3.8.3 或更高版本,那么您可以使用 WITH 访问递归和非递归 CTE。 :

enter image description here

感谢lunicon让我们知道这个 SQLite 更新。


3.8.3 之前 的版本中,SQLite 不支持递归 CTE(或根本不支持 CTE),因此没有 WITH in SQLite .因为您不知道它有多深,所以您不能使用标准的 JOIN 技巧来伪造递归 CTE。您必须以困难的方式进行并在您的客户端代码中实现递归:

  • 获取初始行和子部分 ID。
  • 获取子部分的行和子部分 ID。
  • 重复直到没有任何结果。

关于sql - sqlite3 上的基本递归查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com