当前位置: 首页 > 面试题库 >

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

周云
2023-03-14
问题内容

我正在使用嵌套集模型在iPhone上的本地SQLite数据库中存储较大的数据层次结构。我从他们的网站上阅读了MySQL技术文章,了解如何执行此操作,但是他们建议的查询(以及我需要的查询)之一似乎不适用于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名称”,即

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;

至少似乎摆脱了错误。



 类似资料:
  • 主要内容:SELECT 语句中的子查询使用,实例,INSERT 语句中的子查询使用,实例,UPDATE 语句中的子查询使用,实例,DELETE 语句中的子查询使用,实例子查询或称为内部查询、嵌套查询,指的是在 SQLite 查询中的 WHERE 子句中嵌入查询语句。 一个 SELECT 语句的查询结果能够作为另一个语句的输入值。 子查询可以与 SELECT、INSERT、UPDATE 和 DELETE 语句一起使用,可伴随着使用运算符如 =、<、>、>=、<=、IN、BETWEEN 等。 以下是

  • 你能帮我解决这个问题吗?我想使用此方法在我的数据库中查找特定的缺口(它是由Apache Derby制作的)。我使用了EntityManager并从NetBeans中的数据库中映射持久性-实体类。 我得到这个错误: Java . lang . illegalargumentexception:在EntityManager中创建查询时出现异常:< br >异常描述:解析[SELECT * FROM U

  • 问题内容: 非常感谢你的帮助。我有一个和表。位置 我对位置模型执行以下查询。 然后,我要对其执行附加查询并根据以下内容对其进行过滤 该查询并 没有 工作。它返回一个空对象。 这是参数: location_params 1} permitted: true> ads_params 1} permitted: true> 不允许这样输入特定的列: 我有postgresql,我没有考虑过使用SQL,但是

  • 我想让ElasticSearch在我的盒子上工作。我有以下映射: 所以我有一个“运动鞋”索引,它有一个“运动鞋”类型,一个“品牌”属性,它有一个“ID”和一个“标题”。 检查运动鞋是否存在,运行curl-xget“http://localhost:9200/sneakers/sneaker/1?prettley”,我得到: 现在,runningcurl-xget'http://localhost:

  • 问题内容: 我有一个非常简单的查询,像这样: 我的默认设置是或某些用户ID,但是由于某种原因,该查询总是返回0行,我也尝试过,但还是没有运气,这可能是什么错误? EDTI 因此,在运行更多查询后,我发现我的问题是字段的默认值,因此我修改了查询,现在可以正常使用: 问题答案: NULL值需要特殊处理:http : //dev.mysql.com/doc/refman/5.1/en/working-w

  • 最近我遇到了一个问题:几乎没有sqlite查询在工作。请注意,插入等其他操作正在运行。我在StackOverflow和其他网站上读过很多不同的答案,但都不管用。 我的代码很简单: 当我在SQLite浏览器中执行时,一切都很正常。但是Java没有输出例外。