首页 > 编程笔记 > MySQL笔记 阅读:12

Cypher ORDER BY语句的用法(附带实例)

ORDER BY 语句不能对节点或关系进行排序,只能根据属性值进行排序。

我们先删除图中的所有节点和关系,代码如下:
MATCH (n) DETACH DELETE n
上述代码会删除所有的节点及关系,读者在使用过程中一定要谨慎。

然后创建节点,代码如下:
CREATE ({name:"A",length:170,age:34})
CREATE ({name:"B",age:34})
CREATE ({name:"C",length:185,age:32})
最后创建关系,代码如下:
MATCH (A{name:"A"}),(B{name:"B"}),(C{name:"C"})
CREATE (A) - [:KNOWS] -> (B)
CREATE (B) - [:KNOWS] -> (C)
由节点和关系构成的图如下图所示:


图 1 节点和关系构成的图(ORDER BY语句)

ORDER BY语句根据属性排序节点

ORDER BY 语句可用于对 MATCH 语句查询返回的结果进行排序,具体代码如下:
MATCH (n)
RETURN n.name, n.age
ORDER BY n.name
返回值如下:
│"n.name"│"n.age"│
│"A"     │34       │
│"B"     │34       │
│"C"     │32       │
在默认情况下,ORDER BY 语句对 MATCH 语句查询返回的结果按升序进行排序,如果要按照降序对返回结果进行排序,那么可以添加 DESC 关键字。

ORDER BY语句按多个属性排序节点

ORDER BY 语句中可指定多个属性,实现按照多个属性值排序的结果。对于多个属性,Cypher 首先根据列出的第一个属性值对结果进行排序,然后按照第二个属性值对排序后属性值相等的属性值进行排序,依次类推。

具体代码如下:
MATCH (n)
RETURN n.name, n.age
ORDER BY n.age, n.name
返回值如下:
│"n.name"│"n.age"│
│"C"     │32       │
│"A"     │34       │
│"B"     │34       │
可以看出,排序是先根据 age 属性值进行的,然后对 age 属性值相等的节点根据 name 属性值进行排序。

ORDER BY语句按降序排序

对排序结果按降序排序,具体代码如下:
MATCH (n)
RETURN n.name
ORDER BY n.name DESC
返回值如下:
│"n.name"│
│"C"     │
│"B"     │
│"A"     │

相关文章