sql update from select

Galaxy Glossary

How can I update multiple rows in a table based on values from another table?

The `UPDATE ... FROM` clause in SQL allows you to update rows in one table using data from another table. This is a powerful technique for data manipulation, especially when you need to synchronize or modify data across multiple tables.
Sign up for the latest in SQL knowledge from the Galaxy Team!
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Description

The `UPDATE ... FROM` clause is a powerful SQL feature that allows you to update rows in one table based on data from another table. Instead of manually specifying each row to update, you can use a `SELECT` statement to identify the rows that need modification. This is particularly useful when you need to synchronize data between tables or perform bulk updates based on criteria from another table. It's important to understand that the `FROM` clause in this context refers to the table whose data you're using to update the target table, not a join operation. The `WHERE` clause is still crucial to specify the exact rows to update. This method is more efficient than using multiple `UPDATE` statements or a loop in your application, as it's handled entirely within the database engine.

Why sql update from select is important

This technique is crucial for data synchronization and maintenance. It allows for efficient bulk updates, reducing the need for complex application logic and improving performance. It's a fundamental skill for any SQL developer.

Example Usage

```sql -- Sample tables CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50), City VARCHAR(50) ); CREATE TABLE Addresses ( AddressID INT PRIMARY KEY, CustomerID INT, Street VARCHAR(100), State VARCHAR(50) ); -- Insert sample data (replace with your actual data) INSERT INTO Customers (CustomerID, FirstName, LastName, City) VALUES (1, 'John', 'Doe', 'New York'), (2, 'Jane', 'Smith', 'Los Angeles'); INSERT INTO Addresses (AddressID, CustomerID, Street, State) VALUES (1, 1, '123 Main St', 'NY'), (2, 2, '456 Oak Ave', 'CA'); -- Update Customers table using data from Addresses table UPDATE Customers SET City = a.State FROM Addresses a WHERE Customers.CustomerID = a.CustomerID; SELECT * FROM Customers; ```

Common Mistakes

Want to learn about other SQL terms?