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

単一のテーブルにMergeステートメントを使用する

    SELECT ... FROM DUALを使用します USINGで データを使用して単一の行を生成する句:

    SQLフィドル

    Oracle11gR2スキーマのセットアップ

    create table student (
      sid int,
      name varchar(20),
      major varchar(10),
      gpa float,
      tutorid int,
      PRIMARY KEY (sid)
    );
    
    insert into student values(101,'Bill','CIS',3.45,102);
    insert into student values(102,'Mary','CIS',3.1,null);
    insert into student values(103,'Sue','Marketing',2.95,102);
    insert into student values(104,'Tom','Finanace',3.5,106);
    insert into student values(105,'Alex','CIS',2.75,106);
    insert into student values(106,'Sam','Marketing',3.25,103);
    insert into student values(107,'Joan','Finance',2.9,102);
    

    クエリ1

    merge into student dst
    using (
      SELECT 123 AS sid,
             'Rahul' AS name,
             'Temp' AS major
      FROM   DUAL
    ) src
    on (src.major=dst.major)
    when matched then
      update set name=src.name
    when not matched then
      insert(SID,name,major) values ( src.sid, src.name, src.major )
    

    クエリ2

    SELECT * FROM student
    

    結果

    | SID |  NAME |     MAJOR |    GPA | TUTORID |
    |-----|-------|-----------|--------|---------|
    | 101 |  Bill |       CIS |   3.45 |     102 |
    | 102 |  Mary |       CIS |    3.1 |  (null) |
    | 103 |   Sue | Marketing |   2.95 |     102 |
    | 104 |   Tom |  Finanace |    3.5 |     106 |
    | 105 |  Alex |       CIS |   2.75 |     106 |
    | 106 |   Sam | Marketing |   3.25 |     103 |
    | 107 |  Joan |   Finance |    2.9 |     102 |
    | 123 | Rahul |      Temp | (null) |  (null) |
    



    1. SQLでテーブルの最後のレコードを選択するにはどうすればよいですか?

    2. 車両の読み取り値から差し引くことにより、車両の走行距離を計算します

    3. 関数がPostgreSQLに存在するかどうかを確認するにはどうすればよいですか?

    4. MySQLデータベースから列名を含むPandasデータフレームへのデータのインポート