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

如何在SQLite3中执行递归查询?

DDD
发布: 2024-12-31 10:57:10
原创
592 人浏览过

How Can I Perform Recursive Queries in SQLite3?

SQLite3 中的递归查询:综合指南

虽然 SQLite3 历来缺乏对递归查询的支持,但最近的进步引入了此功能版本中引入公共表表达式(CTE) 3.8.3.

使用递归CTE(SQLite 3.8.3或更高版本)

SQLite3现在提供WITH语句,它允许定义递归CTE。使用递归 CTE,您可以轻松执行递归查询:

WITH RECURSIVE Subparts AS (
    SELECT Part, SuperPart
    FROM Part
    WHERE SuperPart IS NULL
    UNION
    SELECT Part, SuperPart
    FROM Subparts
    JOIN Part
    ON Subparts.SuperPart = Part.Part
)
SELECT *
FROM Subparts;
登录后复制

早期 SQLite3 版本中的递归查询

在 3.8.3 版本之前,SQLite3 不支持递归查询。但是,存在一种解决方法,可以通过在客户端代码中实现递归来实现:

  1. 初始步骤:检索初始行和子部分 ID。
SELECT Part, SuperPart
FROM Part
WHERE SuperPart IS NULL;
登录后复制
  1. 递归步骤:递归检索子部件的行和子部件 ID。
SELECT Part, SuperPart
FROM Part
WHERE SuperPart IN (sub-part IDs from previous step);
登录后复制
  1. 停止条件:继续递归,直到找不到更多子部件。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板