首页 >数据库 >mysql教程 >如何在SQLite3中执行递归查询来检索分层数据?

如何在SQLite3中执行递归查询来检索分层数据?

Linda Hamilton
Linda Hamilton原创
2024-12-30 13:32:21380浏览

How Can I Perform Recursive Queries in SQLite3 to Retrieve Hierarchical Data?

SQLite3 中的递归查询

在 SQLite3 中,可以执行递归查询从包含父子的表中检索分层数据关系,例如查找给定超级部分的所有子部分。为了实现这一点,您可以使用WITH RECURSIVE语法,该语法在SQLite3版本3.8.3及更高版本中受支持。

WITH RECURSIVE SubParts AS (
  SELECT Part, SuperPart, 1 AS Level
  FROM Part
  WHERE SuperPart = 'eZ00'
  UNION ALL
  SELECT p.Part, p.SuperPart, s.Level + 1
  FROM Part AS p
  JOIN SubParts AS s ON p.SuperPart = s.Part
)
SELECT * FROM SubParts;

WITH RECURSIVE语句创建一个名为SubParts的临时表,其中包含原始行和名为 Level 的列,其父行初始化为 1。 UNION ALL 子句通过选择与当前行的子部分匹配的行并将 Level 加 1 来执行递归步骤。然后查询返回 SubParts 表中的所有行。

SQLite3 之前的版本3.8.3

在 SQLite3 版本 3.8.3 之前,没有递归查询支持。要在客户端代码中模拟多级层次结构的递归,请按照以下步骤操作:

  1. 检索初始行及其子部分。
  2. 迭代检索行及其子部分,直到没有行被检索到。回来了。

以上是如何在SQLite3中执行递归查询来检索分层数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn