()-[:EVALUATES]->(post) RETU-6ren">
gpt4 book ai didi

Neo4j Cypher 查询 : "Unknown identifier" when RETURN DISTINCT

转载 作者:行者123 更新时间:2023-12-04 19:08:10 25 4
gpt4 key购买 nike

为什么这个查询有效(尽管有重复的行):

START user=node(1197)
MATCH (user)-[:WROTE_REVIEW]->()-[:EVALUATES]->(post)
RETURN post.Id, post.Image, post.Description
ORDER BY post.CreationTime DESC;

而这个没有(它返回错误 Unknown identifier 'post' ):
START user=node(1197)
MATCH (user)-[:WROTE_REVIEW]->()-[:EVALUATES]->(post)
RETURN DISTINCT post.Id, post.Image, post.Description
ORDER BY post.CreationTime DESC;

唯一的区别是 DISTINCT关键词。

我通过使用 WITH 找到了解决方法但在我看来,我不应该这样做。

我正在使用 Neo4j 2.0.0-M05。有任何想法吗?

谢谢!

最佳答案

这是合法的。

DISTINCT 消除了按 DISTINCT 子句中未提及的属性排序的可能性,因为它们可能会被折叠(例如,如果有 3 个带有 post.CreationTime 的记录与 DISTINCT 合并到一个 post.Id 存储桶中,那么应该按哪一个排序? )。要获得有效的查询,请在 DISTINCT 中包含 post.CreationTime,例如:

START user=node(1197)
MATCH (user)-[:WROTE_REVIEW]->()-[:EVALUATES]->(post)
RETURN DISTINCT post.Id, post.Image, post.Description, post.CreationTime
ORDER BY post.CreationTime DESC;

但这并不明显,所以我提出了 https://github.com/neo4j/neo4j/issues/1322将其纳入文档 - 感谢您指出!

关于Neo4j Cypher 查询 : "Unknown identifier" when RETURN DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19403435/

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