gpt4 book ai didi

sqlite - 没有CTE的SQLite 3树形列表

转载 作者:行者123 更新时间:2023-12-03 19:41:32 26 4
gpt4 key购买 nike

我修改了一条SQL语句以与SQLite 3配合使用。但是不幸的是,通用表表达式和WITH子句仅在前面的SQLite 3.6中可用,但是我的开源应用程序的用户正在使用SQLite 3.2,并且我不能强迫他们将整个Linux系统更新为获取新软件包。是否可以仅使用SQL语言而不使用CTE和“ With”子句来使代码适应工作?

这是代码:

WITH 
cte AS
(SELECT 0 AS level, collectionID, collectionName, parentCollectionID, CAST(collectionID AS VARCHAR(128)) AS Sort
FROM collections WHERE parentCollectionID IS NULL
UNION ALL
SELECT p.level + 1, c.collectionID, c.collectionName, c.parentCollectionID, CAST(p.Sort || '/' || CAST(c.collectionID AS VARCHAR) AS VARCHAR(128))
FROM collections c
INNER JOIN cte p ON p.collectionID = c.parentCollectionID)
SELECT
collectionID,
printf('%*s', level * 4, '') || collectionName AS collectionName,
Sort,
parentCollectionID
FROM cte
ORDER BY Sort;


结果如下:

collectionID    collectionName            Sort     parentCollectionID
1 Dissertação 1 0
10 Filosofia Reformacional 10 0
11 Dooyeweerd 11 0
14 ZotPad favorites 14 0
15 Diversos 15 0
2 Bíblia 2 0
3 Políticas Públicas 3 0
4 Zotero 4 0
5 Linux 5 0
6 Tese Doutorado 6 0
12 Pontal Do Paraná 6/12 6
7 Multimodal 6/7 6
13 Modalidades 6/7/13 7
8 Base Histórica 6/7/8 7
9 Artigo Weber 9 0


非常感谢,
最好的祝福,
基督教

最佳答案

将CTE添加到SQLite中是因为它们不能用任何其他SQL语言构造进行仿真。

建议使用SQLite库的方法不是链接到操作系统随附的某个随机版本,而是直接将sqlite3.c文件的副本添加到您的应用程序中。
这样可以防止版本和配置冲突。

关于sqlite - 没有CTE的SQLite 3树形列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28253445/

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