Publish / database · All operations
Delete rows from a table
A variant of Write to a database
Remove the rows of a database table that match keys or a condition.
Status
- In arcform
Not built yet
arcform does not do this yet. Its place on the roadmap
What other tools call it
Meridian's classification; an independent blind rating agreed on 95.7% of 324 rows (variant, version 3).
Apache DataFusion (1)
DELETEread 2026-09-27Remove rows matching a condition from a table; in-memory tables support it
Apache Hop (2)
Deleteread 2026-09-27Delete database rows whose keys match each input row
MongoDB deleteread 2026-09-27Delete documents from a MongoDB collection
EasyMorph (2)
Delete database rowsread 2026-09-27Delete the rows of a database table that satisfy query conditions
Delete matching database rowsread 2026-09-27Delete database rows whose keys match, or do not match, keys in an EasyMorph table
KNIME Analytics Platform (2)
DB Reference Row Deleterread 2026-09-27Delete database rows whose key columns match rows of the input table
DB Row Deleterread 2026-09-27Delete rows of a database table that match configured filter criteria
Pentaho Data Integration (1)
Deleteread 2026-09-27Delete rows from a database table
RapidMiner Studio (2)
Delete Cassandraread 2026-09-27Delete rows from a Cassandra or Astra table by the input ID column
Delete MongoDBread 2026-09-27Delete documents from a MongoDB collection
Talend (1)
tHBaseDeleteRowsread 2026-09-27Delete rows from an HBase table by row key
Background
In Structured Query Language (SQL), the DELETE statement removes one or more rows from a table: those matching a condition, or else every row.[1] In PostgreSQL, a DELETE without a WHERE clause deletes all rows in the table, and the result is a valid but empty table.[2] SQL's DELETE cannot remove a single value from a row; UPDATE is used to set that value to NULL instead.[1]
When to use it
In DuckDB, DELETE removes the rows for which the WHERE clause is true, and keeps the rows for which it is false or NULL.[3] In EasyMorph, a Delete database rows query can be previewed to show which rows will be deleted before they are deleted.[4] Run the condition as a SELECT first, and count what it matches, before running the DELETE. (Meridian's view)
EasyMorph's Delete matching database rows action has a mode that deletes the rows whose keys do not match any key in the EasyMorph table.[5] In EasyMorph's non-matching mode, an option checked by default makes the action fail when no row matches, since without it every row of the database table would be deleted.[5] Treat a delete that keeps only what matches as a delete of everything else, and guard it against an empty list of keys. (Meridian's view)
Where a linking table refers to a deleted row, keeping referential integrity can take a second delete from the linking table, unless a trigger has been set up to delete the linked rows automatically.[1] DuckDB does not support foreign keys with cascading deletes (ON DELETE CASCADE).[6] In DuckDB, running DELETE does not reclaim space: rows are generally only marked as deleted, and the space is reclaimed on a CHECKPOINT.[3]
The method
In PostgreSQL, rows can be deleted using information in other tables either with sub-selects or by naming the other tables in a USING clause.[2] EasyMorph's Delete matching database rows action deletes the rows of a database table whose combination of key fields matches one in the EasyMorph table.[5] EasyMorph's delete actions use a SQL DELETE statement and are atomic: either every qualifying row is deleted, or nothing is.[4][5]
Bruin's delete+insert strategy deletes every target row whose value in a chosen key column, its incremental_key, appears in a run's result, then inserts that result, so a new batch replaces the old one.[7]
Compared with the alternatives
In PostgreSQL, TRUNCATE has the same effect as an unqualified DELETE on each table, but is faster because it does not scan the tables, and it reclaims disk space at once.[8] In PostgreSQL, TRUNCATE does not fire ON DELETE triggers.[8] A TRUNCATE TABLE statement cannot take a WHERE clause.[9] In DuckDB, TRUNCATE removes all rows from a table, acting as an alias for DELETE FROM without a WHERE clause.[3] DELETE only deletes rows, while the DROP command deletes a table entirely.[1]
Sources
- [1]Delete (SQL) - Wikipediasecondary source
- [2]PostgreSQL: Documentation: 18: DELETEdocumentation
- [3]DELETE Statement – DuckDBdocumentation
- [4]DELETE DATABASE ROWS [EasyMorph Help]documentation
- [5]DELETE MATCHING DATABASE ROWS [EasyMorph Help]documentation
- [6]CREATE TABLE Statement – DuckDBdocumentation
- [7]Materialization | Bruin CLIdocumentation
- [8]PostgreSQL: Documentation: 18: TRUNCATEdocumentation
- [9]Truncate (SQL) - Wikipediasecondary source