【问题标题】:Distinct function somehow not giving back all types不同的功能以某种方式不回馈所有类型
【发布时间】:2015-05-22 23:58:56
【问题描述】:

请随时查看我的最新项目:http://arda-maps.org:2480 arda arda 作为登录名。

现在查看select distinct(type) from Location

这里有 8 条记录(河流、湖泊、地区、城市、岛屿、房屋、山脉、山丘)。但实际上还有更多......

为了向您展示 distinct 并没有返回所有不同的类型,我们搜索一个具有另一种类型的特定顶点:

select * from Location where name = "Citadel of Gondor"

所以我是否以错误的方式使用 distinct。或者结果列表不完整的原因是什么?

【问题讨论】:

    标签: distinct orientdb


    【解决方案1】:

    确实,查询部分在结果集中的应用顺序不是很明显。你输入了:

    select distinct(type) from Location

    并且东方工作室应用limit 20(除非您更改它或在查询中包含不同的限制)。所以最终运行的查询是

    select distinct(type) from Location limit 20

    现在,这可能意味着两者之一:

    1. 最多查找 20 个位置并提供它们的不同类型
    2. 最多查找所有位置的 20 种不同类型

    显然,您期望的是第 2 次,而实际发生的是第 1 次。解决方案是进行内部查询,因此 limit 将显式应用于外部查询:

    select from (select distinct(type) from Location) limit 20

    现在清楚地说,找到我所有位置的不同类型,最多返回 20 个(与 (2) 相同)

    【讨论】:

    • 感谢您的解释。是的,实际上这可能是原因。我只是查看了前 20 个条目,并在那里找出了不同的条目。但是@vitorenesduarte 的解决方案要简单得多。无论如何,谢谢。
    【解决方案2】:

    很奇怪。但如果你尝试:

    select distinct(type) from Location limit -1
    

    您将拥有全部 64 个不同的入口。

    【讨论】:

    • 确实可行,但不知何故它完全是错误的。还是非常感谢。 =)
    • 是的,看起来像。
    • @kwoxer 看起来有问题,但实际上工作方式有点不同,我尝试在我的回答中解释
    猜你喜欢
    • 2020-08-26
    • 2016-02-08
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2017-03-29
    • 1970-01-01
    相关资源
    最近更新 更多