为什么此查询有效(尽管存在重复行):
START user=node(1197)
MATCH (user)-[:WROTE_REVIEW]->()-[:EVALUATES]->(post)
RETURN post.Id, post.Image, post.Description
ORDER BY post.CreationTime DESC;
这个没有(它返回错误未知标识符'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
关键字。
我通过使用与
找到了一个解决方法,但在我看来,我不应该这样做。
我正在使用Neo4j 2.0.0-M05。有什么想法吗?
谢谢!
这是合法的。
DISTINCT消除了按DISTINCT子句中未提及的属性排序的可能性,因为它们可能会折叠(例如,如果post. CreationTime有3条记录与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以使其进入文档-感谢您指出!