sql >> Databáze >  >> RDS >> Oracle

Jak aktualizovat hodnoty sloupce jedné tabulky hodnotami sloupce jiné tabulky?

Tento druh dotazu se nazývá korelovaný dílčí dotaz. Pro váš požadavek by byl dotaz následující....

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

aktualizace tohoto příspěvku na základě vašich odpovědí níže.

Opět platí, že vždy zveřejněte tabulku vytvoření a vložení příkazů (a očekávané výsledky), abyste reprodukovali svůj případ. Pokud nevidíte očekávané výsledky nebo pokud při provádění dotazu vidíte chybu, odešlete přesnou zprávu namísto pouhého sdělení „nefunguje“. Zde jsou výsledky mé relace sqlplus.

---vytvoření tabulky a vložení příkazů

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;

Před aktualizací dat...

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

Aktualizujte prohlášení a výsledky

  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. Začlenění zvyšující se hodnoty do tohoto sql

  2. Null EntityManager pomocí @PersistenceContext

  3. Příkaz PL/SQL SQL*Plus Ignorován

  4. Domovská stránka Oracle 10g express se nezobrazuje