![精通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=1739363387-JZ390KyN8mdyBfBFcOke7QGXjFVTZrqL-0-967833046290e2244cc33a476c8a9ec6)
图3-18 ORDER BY图例
3.3.15.1 根据属性对节点进行排序
ORDER BY用于对输出进行排序。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_102793.jpg?sign=1739363387-7Pw3ENmcLrhuQkj58yi9OnSVJNJf92jZ-0-bf55f6f267e2249ececa5efd5ab63924)
结果将返回根据节点name属性进行排序的节点序列。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_101883.jpg?sign=1739363387-ZktDOsuENysvrlVilNNuAwalHi1OaXd0-0-068d4c37d006f1f131ea53726cbc785a)
3.3.15.2 根据多个属性对节点进行排序
ORDER BY语句中支持根据多个属性对节点进行排序。Cypher将先根据第一个变量进行排序,对于相等的值,然后再检查ORDER BY中的下一个属性值,以此类推。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_102794.jpg?sign=1739363387-zW8XGtM6bFac4FudiBfDro5If10B7Koe-0-9e3ce82469a17576570610efe6b709a3)
本例中先根据年龄排序,对于年龄相等的,再根据名字来排序。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_101886.jpg?sign=1739363387-U1MVkJnx0e6YsjLmHzSKVeYeWW4DMAQw-0-6860fc5feeaae6ae1a3b59076efededa)
3.3.15.3 节点降序排列
在排序的变量后面添加DESC[ENDING],Cypher将以逆序(即降序)对输出进行排序。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P190_102795.jpg?sign=1739363387-sQKvlva7Bo09EJ0BWBpcDLMcIoKxU3Yo-0-bc4c29dd61908be0c6f52b116778d4ea)
本例中根据节点的name降序排列这些节点。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P191_101888.jpg?sign=1739363387-iStKDLwiVdjW0qy6o3Mcy9paJ7Zsq20b-0-97e7ea5b10be1c84fac51a43120b6636)
3.3.15.4 空值的排序
当结果集中包含null值时,对于升序排列,null总是在结果集的末尾。而对于降序排序,null值总是排在最前面。
查询:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P191_102796.jpg?sign=1739363387-FZeOJ89LAjw1iU2kVtP3TSbJWTREnoe8-0-c9b000446b19056acb8a3b24d41c4f2a)
结果将返回以length属性排序的节点,没有length属性的节点将排在最后。
结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P191_101891.jpg?sign=1739363387-zmmS8v3LdkGAasIjnh3tWP1O2QvSXTx5-0-33bc0f4a3cbd5efdde1e7d03f967b6b5)