How to Update Rows in ClickHouse
Last updated July 25, 2026 · By the SaturnSQL team
ClickHouse has no classic UPDATE; use the ALTER TABLE ... UPDATE mutation. Mutations run asynchronously and rewrite whole data parts, so they are expensive and changes are not visible immediately. For frequently changing values, insert new row versions into a ReplacingMergeTree instead.
ALTER TABLE orders UPDATE status = 'shipped' WHERE order_id = 42;Check mutation progress
SELECT mutation_id, command, is_done, latest_fail_reason
FROM system.mutations
WHERE table = 'orders' AND NOT is_done;The lightweight approach: model updates as inserts. Store rows in a ReplacingMergeTree keyed on the id with a version column, insert the new state, and read with FINAL. This avoids mutations entirely.
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