首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用UNION时ORDER BY中的ExecutionFailure“未知标识符”

使用UNION时ORDER BY中的ExecutionFailure“未知标识符”
EN

Stack Overflow用户
提问于 2014-04-18 22:39:21
回答 1查看 63关注 0票数 0

我一直对以下循环查询返回的错误感到困惑:

代码语言:javascript
复制
MATCH (p1:Person)-[r_ptq]->(tq:Ticket)
WHERE tq.name IN ["music", "sports", "movie"]
RETURN distinct(p1) AS person, count(r_ptq) AS score, collect(tq.name) AS tickets
ORDER BY score DESC LIMIT 10

UNION

MATCH (t:Ticket)<-[r_ttq]-(tq:Ticket)
WHERE tq.name IN ["music", "sports", "movie"]
WITH distinct(t), sum(r_ttq.weight) AS weight
ORDER BY weight DESC LIMIT 50
MATCH (t)<--(p:Person)
RETURN distinct(p) AS person, sum(weight) AS score, collect(t.name) AS tickets
ORDER BY score DESC LIMIT 10

这将始终返回

代码语言:javascript
复制
Unknown identifier `score`.

显然,在将查询与UNION组合时,ORDER BY指令中的标识符"score“无法识别。如果我分别运行这两个查询(在UNION之上和之下,这将非常好地工作。另外,如果我删除ORDER BY指令,它将与UNION一起工作,但这当然会改变行为。

任何关于如何解决这个问题的建议都是非常感谢的。

我调整了上面的例子来处理console.neo4j.org上的图形

代码语言:javascript
复制
MATCH (p1:Crew)-[r_ptq]->(tq:Crew)
WHERE tq.name IN ["Neo", "Morpheus"]
RETURN distinct(p1) AS person, count(r_ptq) AS score, collect(tq.name) AS tickets
ORDER BY score DESC
LIMIT 10
UNION
MATCH (t:Crew)<-[r_ttq]-(tq:Crew)
WHERE tq.name IN ["Neo", "Morpheus"]
WITH distinct(t), count(r_ttq) AS weight
ORDER BY weight DESC
LIMIT 50
MATCH (t)<--(p:Crew)
RETURN distinct(p) AS person, sum(weight) AS score, collect(t.name) AS tickets
ORDER BY score DESC
LIMIT 10

并返回Error: org.neo4j.graphdb.NotFoundException: Unknown identifier 'weight'.

在没有UNION的情况下很好地运行查询。

EN

回答 1

Stack Overflow用户

发布于 2014-04-26 06:08:17

Cypher查询在语法上是正确的,并且可以在Neo4j浏览器中工作。console.neo4j.org的控制台似乎有一些JavaScript RegEx验证,在跟踪联合与的标识符时有一个错误。我们将研究这个bug并在控制台中修复它。

现在,请通过从http://www.neo4j.org/download下载Neo4j来使用Neo4j 2.0浏览器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23156333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档