Anda dapat bergabung dengan tabel tambahan dalam UPDATE
pernyataan, memungkinkan untuk bentuk yang lebih disukai ini:
UPDATE books b
SET author_id = a.author_id
FROM authors a
WHERE b.author = a.author_name;
Tiga alasan:
-
Ini lebih aman. Kueri Anda akan menulis nilai NULL di setiap baris yang tidak menemukan penulis yang cocok. Itu tidak terlihat penting dalam kasus Anda, tetapi berpotensi menyebabkan hilangnya data dalam kueri serupa di mana Anda sudah memiliki data di kolom yang akan diperbarui. Alternatif saya tidak melakukan apa pun jika tidak ada penulis yang cocok ditemukan.
-
Ini lebih cepat. Di atas untuk satu. Tetapi juga karena subquery yang berkorelasi seperti Anda memiliki skala sangat. Bergabung dalam sebuah tabel umumnya lebih cepat, terutama dengan lebih dari beberapa baris.
-
Ini lebih bersih dan lebih mudah disesuaikan dengan kolom tambahan.