【问题标题】:ORDER BY the result of UNION of subqueriesORDER BY 子查询的 UNION 结果
【发布时间】:2017-01-03 17:20:06
【问题描述】:

我想计算多个子查询的UNION 并使用ORDER BY 对结果进行排序。

所以我想运行这个查询(用伪密码编写):

(RETURN 2 AS x
UNION
RETURN 1 AS x)
ORDER BY x

并得到以下结果:

╒═══╕
│x  │
╞═══╡
│1  │
├───┤
│2  │
└───┘

有没有办法做到这一点?由于ORDER BY 始终与单个WITH/RETURN 子句相关联,我认为这是不可能的,我也想不出一个好的解决方法。

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    Cypher 语言还不支持Post-Union processing。

    但是,作为一种解决方法,您应该能够使用 APOC 过程 apoc.cypher.run 在“子例程”中执行 UNION 操作,然后在主 Cypher 查询中执行后 UNION 处理。例如:

    CALL apoc.cypher.run("RETURN 2 AS x UNION RETURN 1 AS x", NULL) YIELD value
    RETURN value.x AS x
    ORDER BY x;
    

    更新:现在可以在 Neo4j 4.0 中使用 CALL {subquery} construct。

    【讨论】:

    • 感谢您提出相关问题并提供解决方法。
    • 对于一个非常常见的用例来说,这是一个非常有用的答案。感谢分享这个。
    • 用新的CALL 子句更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2019-04-25
    • 1970-01-01
    • 2011-09-17
    相关资源
    最近更新 更多