Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để cập nhật giá trị cột của một bảng với giá trị cột của bảng khác?

Loại truy vấn này được gọi là truy vấn phụ tương quan. Đối với yêu cầu của bạn, truy vấn sẽ như dưới đây ....

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

cập nhật bài đăng này dựa trên câu trả lời của bạn bên dưới.

Một lần nữa, về sau, hãy luôn đăng các câu lệnh tạo bảng và chèn (và các kết quả mong đợi) để tái tạo trường hợp của bạn. Nếu bạn không thấy kết quả mong đợi hoặc nếu bạn thấy lỗi khi thực hiện truy vấn, hãy đăng thông báo chính xác thay vì chỉ nói "không hoạt động". Đây là kết quả của phiên sqlplus của tôi.

--- tạo bảng và chèn câu lệnh

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;

Trước khi cập nhật dữ liệu ...

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

Cập nhật báo cáo và kết quả

  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. WHERE IN điều kiện không chấp nhận giá trị chuỗi

  2. Lỗi Oracle.Dataaccess ORA-06502:PL / SQL:lỗi số hoặc giá trị:bộ đệm chuỗi ký tự quá nhỏ

  3. Giải nén Oracle từ giá trị cắt xml

  4. Tuyên bố Oracle

  5. Oracle Spool - Thiếu thông tin bổ sung