在Neo4j中从CASE {}返回时的ORDER BY值

时间:2016-11-14 06:57:06

标签: neo4j cypher

我正在尝试将从CASE返回的结果排序。但是这条消息引发了错误:

Variable `strength` not defined (line 8, column 104 (offset: 243))
"RETURN {strength:CASE WHEN p.strength IS NULL THEN r.strength ELSE p.strength*r.strength END} ORDER BY strength DESC LIMIT 3"

查看错误消息,我了解到未确定强度。

如何按照此案例功能进行订购?

1 个答案:

答案 0 :(得分:1)

这不是CASE的问题。问题是ORDER BY子句必须引用RETURN子句中的标识符,但是您的RETURN子句返回没有标识符的映射。

在此(简化代码段)中,地图标识为resORDER BY使用该标识符:

RETURN {strength: r.strength * CASE WHEN p.strength IS NULL THEN 1 ELSE p.strength END} AS res
ORDER BY res.strength DESC
LIMIT 3;