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

Oracle 10g PL/SQL-更新列の値として結果を選択します

    私の批判は、あなたのテーブルのデザインが正規化されておらず、あまりきれいではないと言うことに限定しますが、あなたにはあなたの理由があると思います。私は通常、DECODEを集計列と組み合わせて使用​​し、キー(この場合は疑似キー、trunc(ID / 100))でグループ化することにより、これらの「ローテーション」クエリを実行します。タプルを使用する更新構文と組み合わせます。

     UPDATE Foo
        SET (a, b, c, d)
          = (w, x, y, z);
    

    そしてあなたは得る:

      UPDATE KeyMap
         SET
           ( key1
           , key2
           , key3
           , key4
           ...
           , key99
           )
           = ( SELECT MAX(decode(mod(ID, 100), 1, Key, NULL))
                    , MAX(decode(mod(ID, 100), 2, Key, NULL))
                    , MAX(decode(mod(ID, 100), 3, Key, NULL))
                    , MAX(decode(mod(ID, 100), 4, Key, NULL))
                    ...
                    , MAX(decode(mod(ID, 100), 99, Key, NULL))
                 FROM Source
                WHERE Trunc(Source.ID / 100) = KeyMap.batchId
                GROUP BY Trunc(Source.ID / 100)
             )
       WHERE BatchId = <x>;
    


    1. Rails / Postgres:「GROUPBY句に含めるか、集計関数で使用する必要があります」

    2. mysqlの列の一部でsoundexを使用できますか?

    3. Pythonを使用してMySQLデータベースにBLOBとして保存されたファイルを挿入/取得する方法

    4. MySQLの現在/デフォルトの文字セットを使用してBLOBが変換されますか?