SQL Update from One Table to Another Based on a ID Match
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
SQL (Structured Query Language) is a standard language used to manage and manipulate relational databases. One common task in SQL involves updating data in one table based on values from another table, particularly when the tables are linked by a common identifier or key. This operation is crucial in maintaining data integrity and ensuring that information across multiple tables remains consistent.
The Basics of SQL UPDATE Statement
The UPDATE statement in SQL is used to modify existing records in a table. A typical UPDATE statement specifies the table to update, the columns to update, and the new values. It often includes a WHERE clause to select which rows to update.
Understanding Table Relationships
Before diving into updating based on a matching ID from another table, it is essential to understand table relationships. The most common type of relationship is based on primary and foreign keys. A primary key is a unique identifier for a row within a table, and a foreign key is an attribute in one table that links to the primary key of another table.
Scenario: Updating Customer Information
Imagine a scenario with two tables:
customers: Contains customer data (customer ID, name, address).orders: Records orders placed by customers (order ID, customer ID, order date, customer address).
Over time, customer addresses can change. If the customers table is updated with a new address, but the orders table continues to show an old address, data inconsistency occurs. Here’s how to update the orders table based on the latest customers data.
SQL Update from One Table to Another
To update data in the orders table based on changes in the customers table, you typically use a combination of UPDATE and INNER JOIN. Here's how you can do it:
In this SQL statement:
- UPDATE orders: Specifies the table where data needs to be updated.
- SET orders.customer_address = customers.address: Sets the value of the
customer_addressinordersto be equal to theaddressin thecustomerstable. - FROM customers: Indicates the source table from which to fetch the new data.
- WHERE orders.customer_id = customers.id: Specifies that the update should only happen where the
customer_idmatches betweenordersandcustomers.
Considerations and Best Practices
- Performance: Updates involving joins can be slow and resource-intensive, especially with large tables. Ensuring that the fields involved in the JOIN condition (e.g.,
customer_id) are indexed can help improve the performance. - Data Integrity: Always ensure foreign key constraints are in place to avoid orphan records and maintain data integrity.
- Backup: Before performing mass updates, it’s wise to back up your data in case of errors.
Summary Table
Here's a quick summary of key components and considerations when updating from one table to another based on an ID match:
| Component | Description |
| Primary/Foreign Key | Used to establish a connection between two tables. |
UPDATE Statement | SQL command used to modify records in a table. |
INNER JOIN | Combines rows from two or more tables based on a related column between them. |
| Indexing | Improves performance of queries involving joins by reducing the number of records to scan. |
| Data Backup | Essential before performing operations that modify large amounts of data. |
Conclusion
Updating a table based on another table’s data via SQL requires careful consideration of the relationships, data integrity, and database performance. SQL's powerful JOIN capabilities coupled with the UPDATE statement provide a robust framework for maintaining consistency across related tables in a relational database. Always plan and test SQL commands in safe environments before applying them to live databases.
Related reading

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.