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 不支持递归查询。但是,存在一种解决方法,可以通过在客户端代码中实现递归来实现:
SELECT Part, SuperPart FROM Part WHERE SuperPart IS NULL;
SELECT Part, SuperPart FROM Part WHERE SuperPart IN (sub-part IDs from previous step);
以上是如何在SQLite3中执行递归查询?的详细内容。更多信息请关注PHP中文网其他相关文章!