1. 文章
  2. 文章详情

Neo4j CQL - (Sorting)排序

Neo4j CQL在MATCH命令中提供了“ORDER BY”子句,对MATCH查询返回的结果进行排序。

我们可以按升序或降序对行进行排序。默认情况下,它按升序对行进行排序。 如果我们要按降序对它们进行排序,我们需要使用DESC子句。

ORDER BY子句语法

ORDER BY property-name-list  [DESC]	 

语法元素 描述
ORDER BYNeo4j CQL 关键字
property-name-list 需要排序的属性列表
DESC 降序(specify descending order)可选项

语法:

node-label-name.property1-name,
node-label-name.property2-name, 
.... 
node-label-name.propertyn-name 

语法说明:

语法元素 描述
node-label-name 它是节点的标签名称。
property-name 它是节点的属性名称。

注意 -

我们应该使用逗号(,)运算符来分隔属性名列表。

ORDER BY是紧跟RETURN或者WITH的子句,它指定了输出的结果应该如何排序。

根据属性对节点进行排序

ORDER BY用于对输出进行排序。

MATCH (n)RETURN n.nameORDER BY n.name

返回了根据节点name属性进行排序的节点序列。

根据多个属性对节点进行排序

ORDER BY语句中支持根据多个属性对节点进行排序。Cypher将先根据第一个变量进行排序,对于相等的值,然后再检查 ORDER BY中的下一个属性值,依次类推。

MATCH (n)RETURN n.born, n.nameORDER BY n.born, n.name

节点降序排列

在排序的变量后面添加DESC[ENDING],Cypher将以逆序(即降序)对输出进行排序。

MATCH (n)RETURN nORDER BY n.name DESC

空值的排序

当结果集中包含null值时,对于升序排列,null总是在结果集的末尾。而对于降序排序,null值总是排在最前面。

MATCH (n)RETURN n.title, nORDER BY n.title

本例中返回了以length属性排序的节点,没有length属性的节点排在最后。

例如:

演示如何按照升序排序“员工名称”结果。

MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
ORDER BY emp.name

例如:

演示如何按照员工名称按降序使用排序结果。

MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
ORDER BY emp.name DESC

发表评论

登录后才能评论

评论列表(0条)