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

Oracle-更新結合-非キー保存テーブル

    相関サブクエリを使用してこれを実行できるはずです

    UPDATE tbl1 t1
       SET t1.b = (SELECT c
                     FROM tbl2 t2
                    WHERE t1.id = t2.id
                      AND t1.a  = t2.a
                      AND t1.b  = t2.b
                      AND t2.d  = 'a')
     WHERE t1.a = 'foo'
       AND EXISTS( SELECT 1
                     FROM tbl2 t2
                    WHERE t1.id = t2.id
                      AND t1.a  = t2.a
                      AND t1.b  = t2.b
                      AND t2.d  = 'a')
    

    UPDATEの問題 あなたが書いたことは、Oracleは正確に1つのtbl2.cがあることを保証できないということです 単一のtbl1.bに対応する値 価値。 tbl2に複数の行がある場合 tbl1の特定の行 、相関更新は、単一行のサブクエリが複数の行を返したことを示すエラーをスローします。その場合、サブクエリにロジックを追加して、tbl2のどの行を指定する必要があります。 その場合に使用します。



    1. SQLServerのSelectステートメントでNULL値を持つ行をフィルタリングする方法-SQLServer/TSQLチュートリアルパート110

    2. 行の各列の最後の既知の値を取得します

    3. SQLサーバーのストアドプロシージャのバージョン管理を行うための最良の方法は何ですか?

    4. SQLite-JOINステートメント