Back to top
Documentation SurrealQL Statements DELETE statement

DELETE statement

The DELETE statement can be used to delete records from the database.

Statement syntax

DELETE @targets
	[ WHERE @condition ]
	[ RETURN [ NONE | BEFORE | AFTER | DIFF | @projections ... ]
	[ TIMEOUT @duration ]
	[ PARALLEL ]
;

Example usage

The following query shows example usage of this statement.

-- Delete all records from a table
DELETE person;

-- Delete a record with a specific numeric id
DELETE person:100;

-- Delete a record with a specific string id
DELETE person:tobie;

The delete statement supports conditional matching of records using a WHERE clause. If the expression in the WHERE clause evaluates to true, then the respective record will be deleted.

-- Update all records which match the condition
DELETE city WHERE name = 'London';

By default, the delete statement does not return any data, returning only an empty array if the statement succeeds completely. Specify a RETURN clause to change the value which is returned for each document that is deleted.

-- Don't return any result (the default)
DELETE user WHERE age < 18 RETURN NONE;

-- Return the changeset diff
DELETE user WHERE interests CONTAINS 'reading' RETURN DIFF;

-- Return the record before changes were applied
DELETE user WHERE interests CONTAINS 'reading' RETURN BEFORE;

-- Return the record after changes were applied
DELETE user WHERE interests CONTAINS 'reading' RETURN AFTER;

When processing a large result set with many interconnected records, it is possible to use the TIMEOUT keywords to specify a timeout duration for the statement. If the statement continues beyond this duration, then the transaction will fail, no records will be deleted from the database, and the statement will return an error.

DELETE person WHERE ->knows->person->(knows WHERE influencer = false) TIMEOUT 5s;