sql >> データベース >  >> RDS >> Oracle

あるテーブルの列の値を別のテーブルの列の値で更新するにはどうすればよいですか?

    この種のクエリは、相関サブクエリと呼ばれます。要件に応じて、クエリは次のようになります。...

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

    以下の返信に基づいてこの投稿を更新します。

    繰り返しになりますが、今後は、常にcreate tableとinsertステートメント(および期待される結果)を投稿して、ケースを再現してください。期待した結果が表示されない場合、またはクエリの実行時にエラーが表示される場合は、単に「機能していません」と言うのではなく、正確なメッセージを投稿してください。これが私のsqlplusセッションの結果です。

    ---テーブルを作成してステートメントを挿入します

    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;
    

    データを更新する前に...

    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
    

    ステートメントと結果を更新する

      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. この SQL ステートメントの実行順序は?

    2. Wordpressの結合クエリ

    3. データベースメールアカウント(SSMS)を削除する

    4. 1つのテーブルに通常いくつのフィールドがありますか?