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

Oracle10gの左結合で削除

    シャノンの解決策は、進むべき道です。演算子NOT IN(またはNOT EXISTS)を使用します。

    ただし、Oracleで結合を削除または更新することはできますが、構文はMSSQLServerと同じではありません。

    SQL> DELETE FROM (SELECT grp.*
      2                  FROM grp
      3                  LEFT JOIN my_data ON grp.id1 = my_data.id1
      4                                   AND grp.id2 = my_data.id2
      5                                   AND grp.id3 = my_data.id3
      6                                   AND grp.id4 = my_data.id4
      7                 WHERE my_data.id1 IS NULL);
    
    2 rows deleted
    

    さらに、Oracleは、ステートメントによってアクセスされる基本行に関してあいまいさがない場合にのみ、結合を更新できるようにします。特に、行が結合に2回表示される可能性がある場合、Oracleは更新または削除のリスクを負いません(ステートメントは失敗します)。この場合、削除はmy_data(id1, id2, id3, id4).にUNIQUE制約がある場合にのみ機能します。



    1. PostgreSQLストリーミングレプリケーションと論理レプリケーション

    2. MSSQLは非推奨になっているので、SQLSRV拡張機能をPHPで動作させるにはどうすればよいですか?

    3. PHPとMySQLを使用したUnicode文字列(हिन्दी)の保存と表示

    4. SQL Server CLR統合は構成ファイルをサポートしていますか?