sql >> Databasteknik >  >> RDS >> Oracle

Hur uppdaterar man värden för en tabellkolumn med en annan tabells kolumnvärden?

Denna typ av fråga kallas en korrelerad underfråga. För ditt krav skulle frågan vara enligt nedan....

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

uppdaterar det här inlägget baserat på dina svar nedan.

Återigen, framöver, posta alltid skapa-tabellen och infoga uttalanden (och de förväntade resultaten) för att återskapa ditt fall. Om du inte ser de förväntade resultaten eller om du ser ett fel när du kör frågan, posta det exakta meddelandet istället för att bara säga "fungerar inte". Här är resultatet av min sqlplus-session.

---skapa tabell och infoga satser

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;

Innan du uppdaterar 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

Uppdatera uttalande och resultat

  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. Postgres 9.4 hänger under uppfriskande materialiserad vy

  2. Hur man laddar upp och laddar ner filer PHP och MySQL

  3. ORACLE Efter uppdateringstrigger:löser ORA-04091 mutationstabellfel

  4. Lägg till 2 månader till aktuell tidsstämpel