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

OracleSQLUpdateクエリの更新には数日かかります

    これを試すことができます

      1  MERGE
      2     INTO  target_table tgt
      3     USING source_table src
      4     ON  ( src.object_id = tgt.object_id )
      5  WHEN MATCHED
      6  THEN
      7     UPDATE
      8     SET   tgt.object_name = src.object_name
      9     ,     tgt.object_type = src.object_type
     10  WHEN NOT MATCHED
     11  THEN
     12     INSERT ( tgt.object_id
     13            , tgt.object_name
     14            , tgt.object_type )
     15     VALUES ( src.object_id
     16            , src.object_name
     17            , src.object_type );
    

    構文は最初は少し気が遠くなるように見えますが、上から下に読んでいくと、非常に直感的です。次の句に注意してください。

    •MERGE(1行目):前述のように、これはOracleの4番目のDMLステートメントになりました。追加したいヒントは、このキーワードの直後に続きます(つまり、MERGE / * + HINT * /);

    •INTO(2行目):これは、MERGEのターゲットを指定する方法です。ターゲットは、テーブルまたは更新可能なビューのいずれかである必要があります(インラインビューはここでは使用できません)。

    •USING(3行目):USING句は、MERGEのソースデータセットを表します。これは、単一のテーブル(この例のように)またはインラインビューにすることができます。

    •ON()(4行目):ON句は、ソースデータセットとターゲットテーブルの間の結合を提供する場所です。結合条件は括弧で囲む必要があることに注意してください。

    •WHENMATCHED(5行目):この句は、ターゲットテーブルに一致するレコードがすでにある場合(つまり、ソースデータセットとターゲットデータセットの間に結合がある場合)に何をするかをOracleに指示する場所です。この場合、明らかにUPDATEが必要です。この句の制限の1つは、ON句で使用されている列を更新できないことです(もちろん、すでに一致しているため、更新する必要はありません)。結合列を含めようとすると、直感的でない無効な識別子の例外が発生します。および

    •WHENNOTMATCHED(10行目):この句は、現在一致するものがないレコードを挿入する場所です。



    1. PHPでの並列mysqlクエリ?

    2. SQLを使用して日付で並べ替えることはできますが、結果セットの後ろにnullの日付を配置しますか?

    3. WindowsからAmazonEC2でMySQLに接続するにはどうすればよいですか?

    4. mysqlは30日の範囲の日付を選択します