sql merge statement

Galaxy Glossary

How can I update or insert data into a table based on conditions using a single statement?

The SQL MERGE statement allows you to perform both UPDATE and INSERT operations on a target table based on a source table or a set of values. It's a powerful tool for data manipulation, especially when dealing with complex update logic.
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 MERGE statement is a powerful SQL construct that combines UPDATE and INSERT operations into a single statement. It's particularly useful when you need to update rows in a target table based on matching rows in a source table or when inserting new rows if no match is found. This approach simplifies complex update logic, making your code more readable and maintainable. Imagine you have a customer table and a new customer data source. Using MERGE, you can efficiently update existing customers or insert new ones without writing separate UPDATE and INSERT statements. This single statement ensures data consistency and reduces the risk of errors compared to separate update and insert statements. The MERGE statement is supported by many database systems, including Oracle, SQL Server, and PostgreSQL, making it a valuable tool for data manipulation across various platforms.

Why sql merge statement is important

The MERGE statement streamlines data updates and insertions, improving code readability and maintainability. It reduces the risk of errors associated with separate UPDATE and INSERT statements, especially in complex scenarios. This efficiency is crucial for maintaining data integrity in large-scale applications.

Example Usage

```sql -- Sample tables CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50), City VARCHAR(50) ); CREATE TABLE NewCustomers ( CustomerID INT, FirstName VARCHAR(50), LastName VARCHAR(50), City VARCHAR(50) ); -- Insert some sample data into Customers INSERT INTO Customers (CustomerID, FirstName, LastName, City) VALUES (1, 'John', 'Doe', 'New York'), (2, 'Jane', 'Smith', 'Los Angeles'); -- Insert some sample data into NewCustomers INSERT INTO NewCustomers (CustomerID, FirstName, LastName, City) VALUES (3, 'Peter', 'Jones', 'Chicago'), (4, 'David', 'Lee', 'Houston'); -- MERGE statement MERGE INTO Customers AS Target USING NewCustomers AS Source ON Target.CustomerID = Source.CustomerID WHEN MATCHED THEN UPDATE SET FirstName = Source.FirstName, LastName = Source.LastName, City = Source.City WHEN NOT MATCHED THEN INSERT ( CustomerID, FirstName, LastName, City ) VALUES ( Source.CustomerID, Source.FirstName, Source.LastName, Source.City ); SELECT * FROM Customers; -- Clean up DROP TABLE Customers; DROP TABLE NewCustomers; ```

Common Mistakes

Want to learn about other SQL terms?