Skip to Content

ORDER 子句

ORDER 用于根据属性对当前结果排序,以确保输出确定性。我们目前支持两种排序选项:ASC 表示升序,DESC 表示降序。如果未特别指定,默认为升序。值得注意的是,ORDER 可以与 LIMIT 组合使用,相当于 TopK 操作。我们将介绍以下常见使用模式。

按单一属性排序

MATCH (a) RETURN a.name ORDER BY a.name ASC;

输出:

+-------------+ | _0_a.name | +=============+ | josh | +-------------+ | lop | +-------------+ | marko | +-------------+ | peter | +-------------+ | ripple | +-------------+ | vadas | +-------------+

按多个属性排序

MATCH (a)-[b]->(c) RETURN a.name, b.weight ORDER BY a.name ASC, b.weight ASC;

输出:

+-------------+---------------+ | _0_a.name | _4_b.weight | +=============+===============+ | josh | 0.4 | +-------------+---------------+ | josh | 1 | +-------------+---------------+ | marko | 0.4 | +-------------+---------------+ | marko | 0.5 | +-------------+---------------+ | marko | 1 | +-------------+---------------+ | peter | 0.2 | +-------------+---------------+

按表达式排序

除了直接按属性排序外,ORDER BY 键也可以是更复杂的表达式,如算术运算结果、标量函数返回值等。

按预计算表达式排序

MATCH (a)-[b]->(c) RETURN a.age, c.name ORDER BY a.age + 10 ASC, c.name;

输出:

+------------+-------------+ | _0_a.age | _2_c.name | +============+=============+ | 29 | josh | +------------+-------------+ | 29 | lop | +------------+-------------+ | 29 | vadas | +------------+-------------+ | 32 | lop | +------------+-------------+ | 32 | ripple | +------------+-------------+ | 35 | lop | +------------+-------------+

按标量函数结果排序

MATCH (a)-[b]->(c) RETURN a.name, c.name ORDER BY label(a);

如需了解更多标量函数操作,请参阅函数部分

排序与限制

此外,在 BI(商业智能)查询场景中,TopK 是最常见的操作之一,用于截断并仅输出最重要的结果。NeuG 同样支持此类查询。

MATCH (a)-[b]->(c) RETURN a.age, c.name ORDER BY a.age + 10 ASC, c.name ASC LIMIT 2;

输出:

+------------+-------------+ | _0_a.age | _2_c.name | +============+=============+ | 29 | josh | +------------+-------------+ | 29 | lop | +------------+-------------+
Last updated on