3.3.18 WITH語句
WITH語句將分段的查詢部分連接在一起,查詢結果從一部分以管道形式傳遞給另外一部分作為開始點。
使用WITH可以在將結果傳遞到后續(xù)查詢之前對結果進行操作。操作可以是改變結果的形式或者數(shù)量。WITH的一個常見用法就是限制傳遞給其他MATCH語句的結果數(shù)。通過結合ORDER BY和LIMIT,可獲取排在前面的X個結果,從而實現(xiàn)分頁效果。
另一個用法就是在聚合值上過濾。WITH用于在WHERE斷言中引入聚合。這些聚合表達式創(chuàng)建了新的結果綁定字段。WITH也能像RETURN一樣對結果使用別名作為綁定名。WITH還可以用于將圖的讀語句和更新語句分開,查詢中的每一部分要么只是讀取,要么都是寫入。當寫部分的語句是基于讀語句的結果時,這兩者之間的轉換必須使用WITH。
WITH圖例如圖3-21所示。

圖3-21 WITH圖例
3.3.18.1 過濾聚合函數(shù)結果
聚合的結果必須通過WITH語句傳遞才能進行過濾。
查詢:

查詢返回與David相連的人,且該人至少有一個外向關系。
結果:

3.3.18.2 在collect前對結果排序
可以在將結果傳遞給collect函數(shù)之前對結果進行排序,這樣就可以返回排過序的列表。
查詢:

列表中的人名以倒序排列,并且數(shù)量限制為3。
結果:

3.3.18.3 限制路徑搜索的分支
可以限制匹配路徑的數(shù)量,然后以這些路徑為基礎再做任何類似的有限制條件的搜索。
查詢:

先以Anders開始找到與之相連的所有節(jié)點,然后按名字倒序排列得到排第一個的節(jié)點,然后再以該節(jié)點為基礎,找到與之相連的所有節(jié)點,最后返回它們的名字。
結果:

推薦閱讀
- 數(shù)據(jù)要素安全流通
- SQL入門經典(第5版)
- Creating Mobile Apps with Sencha Touch 2
- 分布式數(shù)據(jù)庫系統(tǒng):大數(shù)據(jù)時代新型數(shù)據(jù)庫技術(第3版)
- UDK iOS Game Development Beginner's Guide
- 企業(yè)級容器云架構開發(fā)指南
- SQL Server 2012數(shù)據(jù)庫管理教程
- 編寫有效用例
- MySQL技術內幕:SQL編程
- Doris實時數(shù)倉實戰(zhàn)
- 大數(shù)據(jù)技術原理與應用:概念、存儲、處理、分析與應用
- MySQL數(shù)據(jù)庫技術與應用
- Hands-On System Programming with C++
- 數(shù)據(jù)中臺實戰(zhàn):手把手教你搭建數(shù)據(jù)中臺
- 基于數(shù)據(jù)發(fā)布的隱私保護模型研究