gpt4 book ai didi

iphone - SQLite 查询中的子查询不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 20:22:26 26 4
gpt4 key购买 nike

我正在使用嵌套集模型将大量数据存储在 iPhone 上的本地 SQLite 数据库中。我读了MySQL tech article从他们的网站上了解如何执行此操作,但他们建议的(也是我需要的)查询之一似乎不适用于 SQLite,我不确定如何解决它。

SELECT node.name, (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth
FROM line_items AS node,
line_items AS parent,
line_items AS sub_parent,
(SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM line_items AS node,
line_items AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.name = 'Power Up'
GROUP BY node.name
ORDER BY node.lft
) AS sub_tree
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
AND sub_parent.name = sub_tree.name
GROUP BY node.name
HAVING depth <= 1
ORDER BY node.lft;

SQLite 报告 sub_tree.name 不是列,我认为这是因为它的子查询实现不完整。有没有人知道如何绕过这个限制?

查询的目的是获取给定父节点的所有直接子节点。

最佳答案

尝试在子查询中使用“node.name AS name”,即

SELECT node.name, (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth
FROM line_items AS node,
line_items AS parent,
line_items AS sub_parent,
(SELECT node.name AS name, (COUNT(parent.name) - 1) AS depth
FROM line_items AS node,
line_items AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.name = 'Power Up'
GROUP BY node.name
ORDER BY node.lft
) AS sub_tree
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
AND sub_parent.name = sub_tree.name
GROUP BY node.name
HAVING depth <= 1
ORDER BY node.lft;

至少似乎摆脱了错误。

关于iphone - SQLite 查询中的子查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/843604/

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