我必须从结果中返回三个属性。但结果应该是有序的。因此,为了对结果进行排序,请将该属性添加到return语句中 查询:
RETURN n.prop1,n.prop2,n.prop3
前:
prop1 prop2 prop3
a 3 2
b 4 3
b 4 3
此结果未订购,因此我订购了另一个属性 查询:
RETURN n.prop1,n.prop2,n.prop3 ORDER BY n.prop4
前:
prop1 prop2 prop3 prop4
b 4 3 0.8
b 4 3 0.6
a 3 2 0.4
现在,无论prop4值如何。我必须返回明确的价值 例如:
prop1 prop2 prop3 prop4
b 4 3 0.8
a 3 2 0.4
但是因为prop4对于两行是不同的,所以我无法在return语句中创建不同的prop1值。因此,ORDER BY和DISTINCT发生了冲突。
答案 0 :(得分:0)
b
有两行,其中包含dist4 prop4值,那么您想如何订购呢?您需要确定要用于订购的prop4
。
例如,您可以使用聚合并获取最大值(这似乎是您在上一步中所做的):
UNWIND [{prop1:'a',prop2:3,prop3:2,prop4:0.4}, {prop1:'b',prop2:4,prop3:3,prop4:0.8},{prop1:'b',prop2:4,prop3:3,prop4:0.6}] as n
RETURN DISTINCT n.prop1,n.prop2,n.prop3,max(n.prop4) as maxProp4
ORDER BY maxProp4 DESC
答案 1 :(得分:0)
这可能是您想要的(假设您的节点具有Foo
标签):
MATCH (n:Foo)
WITH n ORDER BY n.prop4
RETURN n.prop1, n.prop2, n.prop3, COLLECT(n.prop4) AS p4;
首先按Foo
对所有prop4
个节点进行排序,然后为prop4
,prop1
的每个不同组合返回prop2
值的有序集合和prop3
值。
以下是一个示例结果:
+-----------------------------------------+
| n.prop1 | n.prop2 | n.prop3 | p4 |
+-----------------------------------------+
| "b" | 4 | 3 | [0.6,0.8] |
| "a" | 3 | 2 | [0.4] |
+-----------------------------------------+