Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zaktualizować wartości kolumn jednej tabeli wartościami kolumn innej tabeli?

Ten rodzaj zapytania nazywa się skorelowanym zapytaniem podrzędnym. Dla Twoich wymagań zapytanie będzie takie jak poniżej....

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

aktualizowanie tego posta na podstawie Twoich odpowiedzi poniżej.

Idąc dalej, zawsze publikuj tabelę tworzenia i instrukcje wstawiania (i oczekiwane wyniki), aby odtworzyć swój przypadek. Jeśli nie widzisz oczekiwanych wyników lub widzisz błąd podczas wykonywania zapytania, opublikuj dokładną wiadomość zamiast po prostu powiedzieć „nie działa”. Oto wyniki mojej sesji sqlplus.

---utwórz tabelę i wstaw instrukcje

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;

Przed aktualizacją danych...

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

Zaktualizuj oświadczenie i wyniki

  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. Dapper.net parametr Oracle

  2. ORA-01843 nie jest prawidłowym miesiącem- Porównywanie dat

  3. Jak korzystać z plików Oracle DMP?

  4. Jak zaprojektować tabelę, która będzie przechowywać bardzo duże dane?

  5. Formatowanie liczb w Oracle za pomocą TO_CHAR