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