![精通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=1739374898-pSNqorlnkf8bPyaYqxCZcj4z9mPoYIOl-0-2eafc386f515e08770069ba49d822b36)
图3-18 ORDER BY图例
3.3.15.1 根据属性对节点进行排序
ORDER BY用于对输出进行排序。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_102793.jpg?sign=1739374898-to98euWn33setdwdUX6SZz93QeZwS07W-0-a8b5898eed1ace12bc9a8199823c9adf)
结果将返回根据节点name属性进行排序的节点序列。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_101883.jpg?sign=1739374898-pcIXIQ4Ib6gJlpuBRF8igoqH85WDgUzd-0-f67e68ae3d8a01053c4374ca8448dff3)
3.3.15.2 根据多个属性对节点进行排序
ORDER BY语句中支持根据多个属性对节点进行排序。Cypher将先根据第一个变量进行排序,对于相等的值,然后再检查ORDER BY中的下一个属性值,以此类推。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_102794.jpg?sign=1739374898-6Z25UFKNB0kSe4zQqsrj8h8Xp5hjecXQ-0-ba9d033f3ed65540835b22a0df14f213)
本例中先根据年龄排序,对于年龄相等的,再根据名字来排序。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_101886.jpg?sign=1739374898-twifI77vYg98PANwzvvWDUX4GyeBOSp2-0-545bf36599e648be9bf53681cf2876de)
3.3.15.3 节点降序排列
在排序的变量后面添加DESC[ENDING],Cypher将以逆序(即降序)对输出进行排序。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_102795.jpg?sign=1739374898-xZ0Rvd79olmDrjlB9c2DCRrCdvBgZivm-0-e8e7e1bf768631fcce020349fa8f040a)
本例中根据节点的name降序排列这些节点。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P191_101888.jpg?sign=1739374898-tUalbq5g079K4YwsAhJ45ltKDowPWKW2-0-a1d943a27e8e7cef9c043abf84222e74)
3.3.15.4 空值的排序
当结果集中包含null值时,对于升序排列,null总是在结果集的末尾。而对于降序排序,null值总是排在最前面。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P191_102796.jpg?sign=1739374898-lkILEFATy10NI5zaVtgGuHdbs7clwvFz-0-034497a711afb2c41981ebdc5962125d)
结果将返回以length属性排序的节点,没有length属性的节点将排在最后。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P191_101891.jpg?sign=1739374898-jslnmUJ2YkkLEjXHFk0EUQFQGjgR9b73-0-4509eff2537425cc0f4a4c7cc3ec6369)