![精通Neo4j](https://wfqqreader-1252317822.image.myqcloud.com/cover/113/47216113/b_47216113.jpg)
上QQ阅读APP看书,第一时间看更新
3.3.15 ORDER BY语句
ORDER BY是紧跟RETURN或者WITH的子句,它指定了输出的结果应该如何排序。
提示:提示:不能对节点或关系进行排序,只能对它们的属性进行排序。ORDER BY依赖值的比较来排序,具体可参见3.2.5.8节。
在变量的范围方面,ORDER BY遵循特定的规则,这取决于RETURN的投射或WITH语句是否聚合或者DISTINCT。如果它是一个聚合或者DISTINCT投射,那么只有投射中的变量可用。如果投射不修改输出基数(聚合和DISTINCT做的),在投射之前可用的变量也可以用。当投射语句覆盖了已存在的变量时,只有新的变量可用。如图3-18所示为ORDER BY图例。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P189_91659.jpg?sign=1738852111-LzcUQyXDY22oYaOWV01StODrFnEhoSWx-0-41ac0cca0569ed00154ada1a4446589e)
图3-18 ORDER BY图例
3.3.15.1 根据属性对节点进行排序
ORDER BY用于对输出进行排序。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_102793.jpg?sign=1738852111-MnHOOUrcjlZg5FHXgAL1n2QxuHDZnoBj-0-60ae0addee0f48a057324d79744fc619)
结果将返回根据节点name属性进行排序的节点序列。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_101883.jpg?sign=1738852111-sF8M6Civ9OqgsZP7zfoAysLOrmJhhTHb-0-db7b87832d901d7dfc4747dad3c3f1a9)
3.3.15.2 根据多个属性对节点进行排序
ORDER BY语句中支持根据多个属性对节点进行排序。Cypher将先根据第一个变量进行排序,对于相等的值,然后再检查ORDER BY中的下一个属性值,以此类推。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_102794.jpg?sign=1738852111-MWRz7OaU745LBcWQfHyrxOJ3SY3LLekP-0-a888598f2e1b0367390fcb7356d4b2ed)
本例中先根据年龄排序,对于年龄相等的,再根据名字来排序。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_101886.jpg?sign=1738852111-Cu9uoyXgFfqAxEN4nlPQv7Gj6x6QBooS-0-eea03d5b0464953918685e387ae44853)
3.3.15.3 节点降序排列
在排序的变量后面添加DESC[ENDING],Cypher将以逆序(即降序)对输出进行排序。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_102795.jpg?sign=1738852111-co5X8ev3SO1J49EhDPD7hBy4j7BvugOZ-0-5cfa423755d3e7ef2ff73400b37168d0)
本例中根据节点的name降序排列这些节点。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P191_101888.jpg?sign=1738852111-IM92F5XP5IWYb6aY0MEivATjmGr9Jgcx-0-42c34367248fe5bd276c461d24a4e8e0)
3.3.15.4 空值的排序
当结果集中包含null值时,对于升序排列,null总是在结果集的末尾。而对于降序排序,null值总是排在最前面。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P191_102796.jpg?sign=1738852111-wZxsCf7B3niMWqfYh2fh9JPw2xy5YHez-0-60928057f0e13aa1900ece79ab39ad04)
结果将返回以length属性排序的节点,没有length属性的节点将排在最后。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P191_101891.jpg?sign=1738852111-p5HZf4moH62Jc7wxZGrfZZ6qbKQNR2ax-0-a4bf7f029f35a69ba2820da5e4cbf76b)