LIMIT
LIMIT
限制返回行的数量。
LIMIT
接受任何计算结果为正 INTEGER
的表达式,并且不引用节点或关系。
Neo4j 不保证 LIMIT 生成的结果。唯一保证特定行顺序的子句是 ORDER BY . |
示例图
以下图用于下面的示例
要重新创建它,请对空的 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
LIMIT 3
通过示例查询将结果限制为 3 行。
n.name |
---|
|
|
|
行数:3 |
示例 2. 使用带有
LIMIT
的表达式来返回行的子集LIMIT
接受任何计算结果为正整数的表达式,只要它可以静态计算(即在运行查询之前计算)。
查询
MATCH (n)
RETURN n.name
ORDER BY n.name
LIMIT 1 + toInteger(3 * rand())
限制 1 行加上随机 0、1 或 2。所以随机限制为 1、2 或 3 行。
n.name |
---|
|
|
|
行数:3 |
LIMIT
和副作用
在查询中使用 LIMIT
不会阻止副作用(如 CREATE
、DELETE
或 SET
)发生,如果限制在与副作用相同的查询部分中。
查询
CREATE (n)
RETURN n
LIMIT 0
此查询不返回任何内容,但会创建一个节点
|
行数:0 |
查询
MATCH (n {name: 'A'})
SET n.age = 60
RETURN n
LIMIT 0
此查询不返回任何内容,但会写入一个属性
|
行数:0 |
如果我们想限制更新次数,我们可以使用 WITH
子句拆分查询
查询
MATCH (n)
WITH n ORDER BY n.name LIMIT 1
SET n.locked = true
RETURN n
在单个节点上写入 locked
属性并返回该节点
n |
---|
|
行数:1 |
将 LIMIT
用作独立子句
LIMIT
的独立使用MATCH (n)
LIMIT 2
RETURN collect(n.name) AS names
names |
---|
|
|
以下查询按 name
降序对所有节点进行排序,跳过前两行并将结果限制为两行。然后,它 收集 结果到列表中。
与
ORDER BY
和 SKIP
结合使用的 LIMIT
MATCH (n)
ORDER BY n.name DESC
SKIP 2
LIMIT 2
RETURN collect(n.name) AS names
names |
---|
|
|