Merge Select Into MS SQL Server
Untuk memahami penggunaan MERGE
, SELECT INTO
, dan bagaimana kedua perintah tersebut bekerja dalam SQL Server, mari kita bahas keduanya secara terpisah:
1. MERGE Statement
Perintah MERGE
digunakan untuk melakukan operasi INSERT
, UPDATE
, atau DELETE
secara kondisional dalam satu perintah. Hal ini sangat berguna ketika Anda ingin melakukan sinkronisasi antara dua tabel.
Sintaks Dasar MERGE
MERGE TargetTable AS targetUSING SourceTable AS sourceON target.KeyColumn = source.KeyColumnWHEN MATCHED THENUPDATE SET target.Column = source.ColumnWHEN NOT MATCHED BY TARGET THENINSERT (Column1, Column2)VALUES (source.Column1, source.Column2)WHEN NOT MATCHED BY SOURCE THENDELETE;
Penjelasan:
USING
: Menentukan tabel sumber (source) untuk dibandingkan dengan tabel target.ON
: Menentukan kondisi yang digunakan untuk mencocokkan data antara tabel target dan sumber.WHEN MATCHED
: Menentukan tindakan (misalnya,UPDATE
) jika kondisi cocok.WHEN NOT MATCHED BY TARGET
: Menentukan tindakan (INSERT
) jika data di tabel sumber tidak ada di tabel target.WHEN NOT MATCHED BY SOURCE
: Menentukan tindakan (DELETE
) jika data di tabel target tidak ada di tabel sumber.
Contoh Penggunaan
Misalkan Anda memiliki tabel Employees
(target) dan NewEmployees
(source). Anda ingin menyinkronkan data antara keduanya:
MERGE Employees AS target
USING NewEmployees AS source
ON target.EmployeeID = source.EmployeeID
WHEN MATCHED THEN
UPDATE SET target.Name = source.Name,
target.Department = source.Department
WHEN NOT MATCHED BY TARGET THEN
INSERT (EmployeeID, Name, Department)
VALUES (source.EmployeeID, source.Name, source.Department)
WHEN NOT MATCHED BY SOURCE THEN
DELETE;
2. SELECT INTO Statement
Perintah SELECT INTO
digunakan untuk membuat tabel baru berdasarkan hasil seleksi dari tabel lain, dengan semua data disalin ke tabel baru.
Sintaks Dasar SELECT INTO
SELECT Column1, Column2, ...INTO NewTableFROM ExistingTableWHERE Condition;
Penjelasan:
INTO
: Membuat tabel baru dengan struktur berdasarkan kolom yang dipilih.- Data: Data dari tabel sumber akan langsung disalin ke tabel baru.
- Kondisi: Data yang dimasukkan ke tabel baru dapat difilter menggunakan klausa
WHERE
.
Contoh Penggunaan
Misalkan Anda ingin membuat tabel baru ArchivedOrders
dari tabel Orders
dengan data yang sudah diproses:
SELECT OrderID, CustomerID, OrderDate
INTO ArchivedOrders
FROM Orders
WHERE Status = 'Processed';
MERGE
untuk menyinkronkan data antara dua tabel.SELECT INTO
untuk membuat tabel baru berdasarkan hasil seleksi dari tabel lain.INSERT
, UPDATE
, dan DELETE
. sedangkan (select into) -> Hanya mendukung INSERT
data ke tabel baru.
Comments
Post a Comment