Update from Select Statement adalah salah satu cara yang paling paling sering ditanyakan. Tidak semua orang tahu tentang bagaimana menggunakan beberapa tabel dengan bantuan klausa JOIN di dalam UPDATE.
Lihatlah contoh berikut. Ada dua table yaitu Tabel 1 dan Tabel 2.
Table 1
CREATE TABLE Table1 (Col1 INT, Col2 INT, Col3 VARCHAR(100))
INSERT INTO Table1 (Col1, Col2, Col3)
SELECT 1, 11, 'First'
UNION ALL
SELECT 11, 12, 'Second'
UNION ALL
SELECT 21, 13, 'Third'
UNION ALL
SELECT 31, 14, 'Fourth'
GO
Table 2
CREATE TABLE Table2 (Col1 INT, Col2 INT, Col3 VARCHAR(100))
INSERT INTO Table2 (Col1, Col2, Col3)
SELECT 1, 21, 'Two-One'
UNION ALL
SELECT 11, 22, 'Two-Two'
UNION ALL
SELECT 21, 23, 'Two-Three'
UNION ALL
SELECT 31, 24, 'Two-Four'
GO
Untuk memilih dan menampilkan tabel.
SELECT *
FROM Table1
SELECT *
FROM Table2
GO
Sekarang mari kita lihat gambar diatas. Pada Table 2 kita memiliki dua baris di mana Col1 adalah 21 dan 31. Kita akan memperbarui nilai dari Table 2 ke Table 1 untuk baris di mana Col1 adalah 21 dan 31. Selain itu, kita akan memperbarui nilai-nilai Col2 dan col3.
Yang paling mudah dan sederhana adalah dengan cara menggunakan JOIN pada UPDATE dan menggunakan beberapa tabel dalam pernyataan UPDATE tersebut, kemudian lakukan perintah statement yang dibuat dengan perintah berikut:
UPDATE Table1
SET Col2 = t2.Col2,
Col3 = t2.Col3
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.Col1 = t2.Col1
WHERE t1.Col1 IN (21, 31)
GO
Mari kita pilih data dari tabel yang telah digabungkan dan diganti nilain-nilainya dengan perintah berikut:
SELECT *
FROM Table1
SELECT *
FROM Table2
GO
Seperti yang Anda lihat bahwa menggunakan JOIN di dalam pernyataan UPDATE akan membuat kita memperbarui data dalam satu tabel dari tabel lain dengan sangat mudah. Selain itu Anda dapat menggunakan statement MERGE untuk melakukan hal yang sama, namun saya pribadi lebih suka metode di atas.
This comment has been removed by the author.
ReplyDeleteTerimakasih.. tulisannya sangat bermanfaat..semoga sukses...
ReplyDeleteMy blog
My Campus
Terima kasih , sangat bermanfaat
ReplyDelete