Oracle SQL: Mengemas kini Data Jadual Menggunakan Nilai daripada Jadual Lain
Selalunya, pengurusan pangkalan data memerlukan mengemas kini satu data jadual dengan nilai yang diperoleh daripada yang lain. Mari kita ilustrasikan ini dengan dua contoh jadual:
Jadual 1:
<code>id name desc ----------------------- 1 a abc 2 b def 3 c adf</code>
Jadual 2:
<code>id name desc ----------------------- 1 x 123 2 y 345</code>
Matlamat kami adalah untuk mengemas kini lajur Table 1
dan name
dengan data daripada desc
, sepadan pada lajur Table 2
. Hasil yang diinginkan:id
<code>id name desc ----------------------- 1 x 123 2 y 345 3 c adf</code>
Kaedah 1: Subkueri Berkaitan
Pendekatan ini menggunakan subkueri berkorelasi dalam pernyataan:UPDATE
<code class="language-sql">UPDATE table1 t1 SET (name, desc) = (SELECT t2.name, t2.desc FROM table2 t2 WHERE t1.id = t2.id) WHERE EXISTS ( SELECT 1 FROM table2 t2 WHERE t1.id = t2.id );</code>
dengan Table 1
yang sepadan wujud dalam id
.Table 2
Kaedah 2: Menggunakan Ungkapan Jadual Biasa (CTE)
Sebagai alternatif, jika gabungan mencipta paparan terpelihara kunci, CTE menyediakan penyelesaian yang lebih bersih:
<code class="language-sql">UPDATE (SELECT t1.id, t1.name name1, t1.desc desc1, t2.name name2, t2.desc desc2 FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id) SET name1 = name2, desc1 = desc2;</code>
Kedua-dua kaedah secara berkesan mengemas kini
berdasarkan data dalam Table 1
, menunjukkan teknik fleksibel untuk manipulasi data dalam Oracle SQL.Table 2
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas kini Data Jadual Oracle Menggunakan Nilai daripada Jadual Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!