Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara memperbarui dengan gabung dalam di Oracle

Sintaks ini tidak akan berfungsi di Oracle SQL.

Di Oracle Anda dapat memperbarui gabungan jika tabel "dipertahankan kunci", yaitu:

UPDATE (SELECT a.val_a, b.val_b
          FROM table a
          JOIN table b ON a.b_pk = b.b_pk)
   SET val_a = val_b

Dengan asumsi bahwa b_pk adalah kunci utama b , di sini gabungan dapat diperbarui karena untuk setiap baris A ada paling banyak satu baris dari B, oleh karena itu pembaruan bersifat deterministik.

Dalam kasus Anda karena nilai yang diperbarui tidak bergantung pada tabel lain, Anda dapat menggunakan pembaruan sederhana dengan kondisi ADA, seperti ini:

UPDATE mytable t
   SET t.VALUE = 'value'
 WHERE EXISTS 
       (SELECT NULL
          FROM tableb b
         INNER JOIN tablec c ON c.id = b.id
         INNER JOIN tabled d ON d.id = c.id
         WHERE t.id = b.id
           AND d.key = 1)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. memberikan nama pengguna &kata sandi yang benar, dapatkan ORA-01017:nama pengguna/kata sandi tidak valid; masuk ditolak

  2. Bagaimana cara Membungkus Kode SQL PL di Oracle?

  3. Mengapa memilih kolom yang ditentukan, dan semuanya, salah di Oracle SQL?

  4. TNS-12505:TNS:pendengar saat ini tidak mengetahui SID yang diberikan di deskriptor koneksi

  5. Apakah inner join sama dengan equi-join?