How to Update and Delete Rows in BigQuery

Last updated August 30, 2026 · By the SaturnSQL team

BigQuery supports standard DML: UPDATE table SET col = value WHERE condition and DELETE FROM table WHERE condition. Both require a WHERE clause - write WHERE TRUE when you really mean every row.

UPDATE customers
SET status = 'inactive'
WHERE last_seen < DATE_SUB(CURRENT_DATE(), INTERVAL 1 YEAR);

Update from another table

UPDATE ... FROM joins the target against another table, which is how you copy corrected values in from staging without a MERGE.

UPDATE customers AS target
SET target.email = source.email
FROM staging_customers AS source
WHERE target.customer_id = source.customer_id;

Deleting rows

DELETE FROM events
WHERE event_date < '2024-01-01';

The WHERE clause is mandatory

Both statements refuse to run without WHERE, which is a guard against accidental full-table writes. To touch every row, say so with WHERE TRUE. To empty a table, TRUNCATE TABLE is cheaper than DELETE WHERE TRUE. Two operational notes: DML statements are jobs like any query, and rows that just arrived via the streaming API sit in a buffer that UPDATE and DELETE cannot touch until it flushes.

DELETE FROM staging_events WHERE TRUE;

TRUNCATE TABLE staging_events;

Run this in SaturnSQL

SaturnSQL is a browser-based SQL editor for teams: shared query library, schema-aware autocomplete, and scheduled exports to Google Sheets and Slack.

Try it free

Do more with BigQuery

Related BigQuery guides