# LIMIT

`LIMIT` constrains the number of returned rows.

`LIMIT` accepts any expression that evaluates to a positive integer and does not refer to nodes or relationships.

## Return a limited subset of the rows

To return a limited subset of the rows, use this syntax:

Query
``````MATCH (n)
RETURN n.name
ORDER BY n.name
LIMIT 3``````

Limit to 3 rows by the example query.

Table 1. Result
n.name

`"A"`

`"B"`

`"C"`

Rows: 3

## Using an expression with `LIMIT` to return a subset of the rows

`LIMIT` accepts any expression that evaluates to a positive integer, as long as it can be statically calculated (i.e. calculated before the query is run).

Query
``````MATCH (n)
RETURN n.name
ORDER BY n.name
LIMIT 1 + toInteger(3 * rand())``````

Limit 1 row plus randomly 0, 1, or 2. So randomly limit to 1, 2, or 3 rows.

Table 2. Result
n.name

`"A"`

`"B"`

`"C"`

Rows: 3

## `LIMIT` will not stop side effects

The use of `LIMIT` in a query will not stop side effects, like `CREATE`, `DELETE`, or `SET`, from happening if the limit is in the same query part as the side effect. This behaviour was undefined in Neo4j versions before `4.3`.

Query
``````CREATE (n)
RETURN n
LIMIT 0``````

This query returns nothing, but creates one node:

 `(empty result)` Rows: 0 Nodes created: 1
Query
``````MATCH (n {name: 'A'})
SET n.age = 60
RETURN n
LIMIT 0``````

This query returns nothing, but writes one property:

 `(empty result)` Rows: 0 Properties set: 1

If we want to limit the number of updates we can split the query using the `WITH` clause:

Query
``````MATCH (n)
WITH n ORDER BY n.name LIMIT 1
SET n.locked = true
RETURN n``````

Writes `locked` property on one node and return that node:

Table 5. Result
n

`{locked:true,name:"A",age:60}`

Rows: 1
Properties set: 1