MySQL: Is there a way to update an entire table in one query?
MySQL: Updating an Entire Table in a Single Query

Learn how to efficiently update all rows in a MySQL table using a single SQL query, covering basic updates, conditional updates, and updates based on values from other tables.
Updating data in a database is a fundamental operation. While you often update specific rows based on certain criteria, there are scenarios where you need to modify every single row in a table. This article explores how to achieve a full table update in MySQL using a single UPDATE
statement, discussing various use cases and best practices.
Basic Full Table Update
The simplest way to update an entire table is to use the UPDATE
statement without a WHERE
clause. This tells MySQL to apply the specified changes to every row in the table. This is useful for tasks like initializing a new column, applying a default value, or making a global change to a dataset.
UPDATE your_table_name
SET column_name = new_value;
Basic syntax for updating an entire table.
For example, if you have a products
table and you want to set a new status
column to 'active' for all products, you would use:
UPDATE products
SET status = 'active';
Setting a new 'status' for all products.
WHERE
clause. A mistake can lead to irreversible data loss or corruption across your entire dataset. It's highly recommended to back up your data or test on a development environment first.Updating with Expressions and Functions
You can also update columns based on expressions, other column values within the same row, or MySQL functions. This allows for more dynamic and complex updates across the entire table.
UPDATE employees
SET salary = salary * 1.10; -- Give a 10% raise to all employees
UPDATE users
SET last_login = NOW(); -- Update last_login for all users to current timestamp
Examples of updating columns using expressions and functions.
flowchart TD A[Start Update Process] --> B{Identify Target Table} B --> C{Define Columns to Update} C --> D{Specify New Values/Expressions} D --> E{Execute UPDATE Statement (No WHERE Clause)} E --> F[All Rows Updated] F --> G[End Process]
Flowchart of a basic full table update operation.
Updating Based on Other Tables (JOIN Updates)
While the primary goal is to update an entire table, sometimes the new values for that table's columns come from another table. MySQL allows you to perform UPDATE
statements with JOIN
clauses to achieve this. This is particularly useful when you need to synchronize data or enrich a table's data based on related information.
UPDATE table_a AS a
JOIN table_b AS b ON a.id = b.a_id
SET a.column_to_update = b.source_column
WHERE a.some_condition = 'value'; -- Optional: if you still want to filter some rows
Syntax for updating a table using a JOIN with another table.
Even if you intend to update all rows in table_a
that have a match in table_b
, the JOIN
itself acts as a filter. If a row in table_a
doesn't have a corresponding row in table_b
based on the ON
condition, it won't be updated. If you truly want to update all rows in table_a
and set a value based on table_b
(or NULL
if no match), you might need a LEFT JOIN
and handle NULL
s.
UPDATE orders AS o
LEFT JOIN customers AS c ON o.customer_id = c.id
SET o.customer_name = COALESCE(c.name, 'Unknown Customer');
Updating 'customer_name' in 'orders' table from 'customers' table, handling non-matches.