Update Data Tabel dari Data di Tabel Lain

Ini adalah satu skill dasar tapi sering dilupakan dalam melakukan query database DML (Data Manipulation Language). Bagaimana cara melakukan update kolom sebuah tabel (katakanlah tabel baru) yang nilainya ada pada kolom di tabel lain (misalnya tabel lama)? Pada database Oracle, tentu saja.

Yang jelas, kita harus melakukan inner join pada dua tabel tersebut seperti halnya kalau kita melakukan query SELECT pada dua tabel master detail. Misalnya, kita akan mengupdate kolom satu, dua, dan tiga. Maka sintaksnya akan seperti begini:

UPDATE TABLE baru b SET (satu, dua, tiga) =
(SELECT satu, dua, tiga FROM lama b
WHERE b.primarykey1 = a.primarykey2 AND b.key2 = a.key2)
WHERE EXISTS
( SELECT 1 FROM lama b
WHERE b.primarykey1 = a.primarykey2 AND b.key2 = a.key2)

Pada klausa SET, kita melakukan query SELECT ke tabel lama dengan melakukan inner join tabel baru dengan penghubung kolom-kolom primary key-nya dan filter-filter kondisi yang diinginkan. Ini untuk mendapatkan nilai kolom satu, dua, dan tiga.

Namun ada satu hal lagi yang harus kita lakukan. Kita juga harus memfilter statement UPDATE dengan kondisi yang sama pada klausa SET. Hal itu dilakukan dengan menggunakan klausa EXISTS hanya sekadar untuk memeriksa ada atau tidaknya row yang bersangkutan pada tabel yang dijoin.

Basic skill, tapi saya sering lupa. Makanya saya tulis di sini, he he he…

Author: Galih Satriaji

Bookaholic, Workaholic. Chubby. That's me!

6 thoughts

  1. Ini nih yang dari dulu saya selalu bingung gimana caranya… Pernah dapet 1 kasus serupa, tapi lupa apakah dulu terselesaikan ato nggak 😀

  2. kasus saya ingin mengupdate beberapa tabel sekaligus dari field salah satu tabel gemana ya.

    misal saya ingin meng update 7 tabel (primary keynya yang ingin dirubah) dari salah satu field yang ada di tabel 1

Leave a Reply

Your email address will not be published. Required fields are marked *