Database Research & Development

  • Home
  • NoSQL
    • NoSQL
    • Cassandra
  • Databases
    • Database Theory
    • Database Designing
    • SQL Server Coding Standards
    • SQL Server
    • PostgreSQL
    • MySQL
    • Greenplum
    • Linux
  • Interviews
    • SQL Server Interviews
    • MySQL Interviews
    • SQL Puzzles
  • DBA Scripts
    • SQL Server DBA Scripts
    • PostgreSQL DBA Scripts
    • MySQL DBA Scripts
    • Greenplum DBA Scripts
  • Home
  • Blog Archives !
  • (: Laugh@dbrnd :)
  • Contact Me !
sqlserverinterviews
Home 2018 May SQL Server Coding Standards: Best practices for MERGE Statement

SQL Server Coding Standards: Best practices for MERGE Statement

This article is half-done without your Comment! *** Please share your thoughts via Comment ***

Prepared by Bihag Thaker

MERGE statement is a new feature introduced in SQL Server 2008 and is very helpful in performing multiple operations like INSERT, UPDATE and DELETE on the same table within a single statement.

Wherever possible, use MERGE statement when a particular operation needs to be carried out based on the condition of existence or non-existence of particular records.

One application of MERGE statement is when you want to insert new records with some Primary Key values if they don’t exist and update the records with the new column values if records already exist with the same Primary Key values.
For example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
MERGE [dbo].[tbl_Customers] AS T
USING
(
VALUES
(
'CUST005'
,'SomeFirstName5'
,'SomeLastName5'
,'19820101'
,'SomeEmailAddress5@domain.com'
,'F'
)
,(
'CUST006'
,'SomeFirstName6'
,'SomeLastName6'
,'19820101'
,'SomeEmailAddress6@domain.com'
,'F'
)
) AS S (CustomerID,FirstName,LastName,BirthDate,EmailAddress,Gender)
ON T.CustomerID = S.CustomerID
WHEN NOT MATCHED BY TARGET THEN
INSERT
(
CustomerID
,FirstName
,LastName
,BirthDate
,EmailAddress
,Gender
)
VALUES
(
S.CustomerID
,S.FirstName
,S.LastName
,S.BirthDate
,S.EmailAddress
,S.Gender
)
WHEN MATCHED THEN
UPDATE
SET
CustomerID = S.CustomerID
,FirstName = S.FirstName
,LastName = S.LastName
,BirthDate = S.BirthDate
,EmailAddress = S.EmailAddress
,Gender = S.Gender;

Had this task be done without using MERGE statement, then you would have to write multiple INSERT and UPDATE statements for each record with the check of existence of a particular record by a particular Primary Key using IF EXISTS(). MERGE statement simplifies this task and
make the code more manageable.

Another application of MERGE is when you want to synchronize two tables.

For example, if there are tbl_Orders and tbl_OrderHistory tables and at the end of the week you synchronize these tables in a way so that new orders from tbl_Orders table should be inserted in tbl_OrderHistory table, deleted orders from tbl_Orders table should be deleted from tbl_OrderHistory table and updated orders from tbl_Orders table should be updated in tbl_OrderHistory table then rather than using multiple INSERT, UPDATE, DELETE statements with complex conditions, perform such task with MERGE statement.

May 24, 2018Anvesh Patel
SQL Server Coding Standards: Best practices for DELETE QuerySQL Server Coding Standards: Best way to define Table Identifiers

Leave a Reply Cancel reply

CAPTCHA
Refresh

*

Anvesh Patel
Anvesh Patel

Database Engineer

May 24, 2018 SQL Server Coding Standardsbasic sql commands, basic sql queries, coding best practices, SQL, sql basics, sql coding best practices, sql commands, sql database, sql formatter, sql language, SQL Programming, sql queries, sql queries for practice, sql query formatter, sql server format, sqlcode
About Me!

I'm Anvesh Patel, a Database Engineer certified by Oracle and IBM. I'm working as a Database Architect, Database Optimizer, Database Administrator, Database Developer. Providing the best articles and solutions for different problems in the best manner through my blogs is my passion. I have more than six years of experience with various RDBMS products like MSSQL Server, PostgreSQL, MySQL, Greenplum and currently learning and doing research on BIGData and NoSQL technology. -- Hyderabad, India.

About DBRND !

dbrnd

This is a personal blog (www.dbrnd.com).

Any views or opinions represented in this blog are personal and belong solely to the blog owner and do not represent those of people, institutions or organizations that the owner may or may not be associated with in professional or personal capacity, unless explicitly stated.

Feel free to challenge me, disagree with me, or tell me I’m completely nuts in the comments section of each blog entry, but I reserve the right to delete any comment for any reason whatsoever (abusive, profane, rude, or anonymous comments) - so keep it polite.

The content of this website is protected by copyright. No portion of this website may be copied or replicated in any form without the written consent of the website owner.

Recent Comments !
  • Anvesh Patel { Sure will do... } – May 27, 12:43 PM
  • Anvesh Patel { Great... } – May 27, 12:41 PM
  • Anvesh Patel { Great... } – May 27, 12:39 PM
  • Anvesh Patel { Great... } – May 27, 12:36 PM
  • Anvesh Patel { Great... } – May 27, 12:28 PM
  • Anvesh Patel { Great... } – May 27, 12:27 PM
  • Anvesh Patel { Great... } – May 27, 12:16 PM
  • Older »
Follow Me !
  • facebook
  • linkedin
  • twitter
  • youtube
  • google
  • flickr
© 2015 – 2019 All rights reserved. Database Research & Development (dbrnd.com)
Posting....