在Neo4j中从CASE{}返回时按值排序



我试图命令从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"

查看错误信息,我明白没有识别强度。

如何使用这个case功能进行Order by ?

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

在这个(简化的代码片段)中,映射被赋予标识符res, ORDER 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;

最新更新