SKIP
SKIP
(及其同义词 OFFSET
)定义从哪一行开始包含输出中的行。
通过使用 SKIP
,结果集将从顶部被修剪。
Neo4j 不保证 SKIP /OFFSET 生成的结果。唯一保证特定行顺序的子句是 ORDER BY 。 |
SKIP
接受任何计算结果为正 INTEGER
的表达式,并且不引用节点或关系。
示例图
以下图用于下面的示例
要重新创建它,请对空的 Neo4j 数据库运行以下查询
CREATE
(andy: Person {name: 'Andy'}),
(bernard: Person {name: 'Bernard'}),
(charlotte: Person {name: 'Charlotte'}),
(david: Person {name: 'David'}),
(erika: Person {name: 'Erika'}),
(andy)-[:KNOWS]->(bernard),
(andy)-[:KNOWS]->(charlotte),
(andy)-[:KNOWS]->(david),
(andy)-[:KNOWS]->(erika)
示例
示例 1. 跳过前三行
以下查询返回结果的一个子集,从第四个结果开始。
查询
MATCH (n)
RETURN n.name
ORDER BY n.name
SKIP 3
n.name |
---|
|
|
行数:2 |
示例 2. 返回中间两行
以下查询返回中间两行,SKIP
跳过第一行,LIMIT
删除最后两行。
查询
MATCH (n)
RETURN n.name
ORDER BY n.name
SKIP 1
LIMIT 2
n.name |
---|
|
|
行数:2 |
示例 3. 使用带
SKIP
的表达式返回结果行的一个子集SKIP
接受任何计算结果为正 INTEGER
的表达式,只要它可以在静态计算(即在查询运行之前计算)。
此查询跳过第一行,然后随机跳过另外 0、1 或 2 行,导致在返回剩余名称之前总共跳过 1、2 或 3 行。
查询
MATCH (n)
RETURN n.name
ORDER BY n.name
SKIP 1 + toInteger(3 * rand())
n.name |
---|
|
|
|
|
行数:4 |
将 SKIP
用作独立子句
SKIP
的独立用法MATCH (n)
SKIP 2
RETURN collect(n.name) AS names
names |
---|
|
|
以下查询按 name
对所有节点进行排序,跳过前两行并将结果限制为两行。然后它收集结果到一个列表中。
SKIP
与 ORDER BY
和 LIMIT
结合使用MATCH (n)
ORDER BY n.name
SKIP 2
LIMIT 2
RETURN collect(n.name) AS names
names |
---|
|
|
OFFSET
作为 SKIP
的同义词
OFFSET
是作为 Cypher® 的 GQL 一致性 的一部分引入的,可以用作 SKIP
的同义词。
查询
MATCH (n)
ORDER BY n.name
OFFSET 2
LIMIT 2
RETURN collect(n.name) AS names
names |
---|
|
|