sql >> Database >  >> RDS >> Oracle

Hoe kan ik kolomwaarden van één tabel bijwerken met kolomwaarden van een andere tabel?

Dit soort zoekopdracht wordt een gecorreleerde subquery genoemd. Voor uw vereiste zou de vraag als volgt zijn....

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

dit bericht bijwerken op basis van je onderstaande antwoorden.

Nogmaals, plaats in de toekomst altijd de tabel Create en voeg verklaringen in (en de verwachte resultaten) om uw zaak te reproduceren. Als u niet de verwachte resultaten ziet of als u een fout ziet wanneer u de query uitvoert, post dan het exacte bericht in plaats van alleen maar te zeggen "werkt niet". Hier zijn de resultaten van mijn sqlplus-sessie.

---tabel maken en instructies invoegen

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;

Voordat u de gegevens bijwerkt...

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

Verklaring en resultaten bijwerken

  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. Waarschuwing:PDOStatement::bindValue():SQLSTATE[HY093]:Ongeldig parameternummer:kolommen/parameters zijn 1-gebaseerd

  2. Converteer rijen naar kolommen Oracle SQL

  3. Vereenvoudig het gebruik van de database (psycopg2) door een module te maken

  4. Vind de kolommen die worden geretourneerd door een functie met tabelwaarde (T-SQL-voorbeelden)