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

Bagaimana cara memperbarui nilai kolom satu tabel dengan nilai kolom tabel lain?

Kueri semacam ini disebut subkueri berkorelasi. Untuk kebutuhan Anda, kuerinya seperti di bawah ini....

update students s
  set s.department = (
          select e.qualification
            from employee e
            where s.uniquename = e.uniquename 
              and s.Homecountry = e.Homecountry
       );

memperbarui pos ini berdasarkan balasan Anda di bawah.

Sekali lagi, ke depan, selalu posting tabel buat dan sisipkan pernyataan (dan hasil yang diharapkan) untuk mereproduksi kasus Anda. Jika Anda tidak melihat hasil yang diharapkan atau jika Anda melihat kesalahan saat menjalankan kueri, kirimkan pesan yang tepat daripada hanya mengatakan "tidak berfungsi". Berikut adalah hasil sesi sqlplus saya.

---membuat tabel dan menyisipkan pernyataan

create table student(
     name varchar2(20),
     age  number,
     department varchar2(3),
     HomeCountry varchar2(10)
    );

Table created.

create table employee5(
     name varchar2(20),
     exp  number,
     qualification varchar2(3),
     homecountry varchar2(10)
   );

Table created.

insert into student values ('Mohan',25,'EEE','India');
insert into student values ('Raja',27,'EEE','India');
insert into student values ('Ahamed',26,'ECE','UK');
insert into student values ('Gokul',25,'IT','USA');
commit;

insert into employee5 values ('Mohan',25,'ECE','India');
insert into employee5 values ('Raja',24,'IT','India');
insert into employee5 values ('Palani',26,'ECE','USA');
insert into employee5 values ('Sathesh',29,'CSE','CANADA');
insert into employee5 values ('Ahamed',28,'ECE','UK');
insert into employee5 values ('Gokul',29,'EEE','USA');
commit;

Sebelum memperbarui data...

SQL> select * from student;

NAME                        AGE DEP HOMECOUNTR
-------------------- ---------- --- ----------
Mohan                        25 EEE India
Raja                         27 EEE India
Ahamed                       26 ECE UK
Gokul                        25 IT  USA

SQL> select * from employee5;

NAME                        EXP QUA HOMECOUNTR
-------------------- ---------- --- ----------
Mohan                        25 ECE India
Raja                         24 IT  India
Palani                       26 ECE USA
Sathesh                      29 CSE CANADA
Ahamed                       28 ECE UK
Gokul                        29 EEE USA

Perbarui pernyataan dan hasil

  1  update student s set s.age =
  2     ( select e.exp
  3          from employee5 e
  4          where e.name = s.name
  5            and e.homecountry = s.homecountry
  6*    )
SQL> /

4 rows updated.

SQL> select * from student;

NAME                        AGE DEP HOMECOUNTR
-------------------- ---------- --- ----------
Mohan                        25 EEE India
Raja                         24 EEE India
Ahamed                       28 ECE UK
Gokul                        29 IT  USA

SQL> commit;

Commit complete.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyalin baris dalam tabel yang sama tanpa harus mengetikkan 50+ nama kolom (sambil mengubah 2 kolom)

  2. Pesan kesalahan ASP Classic SQL Query, tolong sintaks yang benar

  3. Oracle tertinggal antara komit dan pilih

  4. menginstal Oracle Instantclient di Linux tanpa mengatur variabel lingkungan?

  5. Cara menetapkan penghitung berdasarkan suatu kondisi