0
UPDATE
  TABLE_1
SET
  COL_1 = (
             SELECT
               SUM(TOT)
             FROM
               TABLE_2
           )
WHERE
  CUST_NO = TABLE_2.CUST_NO

これが私のSQLです。基本的に、TABLE_1のCOL_1を、TABLE_2に格納されているTOTの合計になるように更新しようとしています。両方のテーブルのCUST_NOでこれを更新しようとしています。

私のコードがまったく機能しないことは知っていますが、これを行う方法が本当にわかりません。

したがって、SQLを実行する前のTABLE_1の1行の例は次のようになります。

|CUST_NO |COL_1|
|1000    |null |
|1001    |null |

そしてTABLE_2:

|CUST_NO |TOT  |
|1000    |15   |
|1000    |17   |
|1001    |13   |
|1001    |12   |

そして私が最終的に欲しい/必要なもの:

表1:

|CUST_NO |COL_1|
|1000    |32   |
|1001    |25   |
4

1 に答える 1

3

これはあなたが望むものかもしれません:

UPDATE TABLE_1
    SET COL_1 = (SELECT SUM(TOT)
                 FROM TABLE_2
                 WHERE  table_1.CUST_NO = TABLE_2.CUST_NO    
                )

これは、すべての行を変更することを前提としています。それ以外の場合は、これを試してください:

UPDATE TABLE_1
    SET COL_1 = (SELECT SUM(TOT)
                 FROM TABLE_2
                 WHERE  table_1.CUST_NO = TABLE_2.CUST_NO    
                )
where exists (select 1 from table_2 WHERE  table_1.CUST_NO = TABLE_2.CUST_NO)

表1の顧客番号が表2にある行を変更するだけです。

データベースによっては、これを表現する方法はおそらく他にもあります。ただし、この構文はほとんどのデータベースで機能するはずです。

于 2013-03-26T18:10:38.350 に答える