0

id 2つのテーブルでidを合計し、1つを更新する方法を試しています:

ストッカ

---------
|P | U |
|-------|
| 1 | 1 |
| 2 | 0 |
| 3 | 3 |
---------

在庫あり

--------- 
|P | U |
|-------|
| 1 | -3 |
| 2 | -2 |
| 3 | -1 |
---------

私が望む結果:

ストッカ

--------
|P | U |
|--------|
| 1 | -2 |
| 2 | -2 |
| 3 | 2 |
---------

私のクエリ:

UPDATE STOCKA,STOCKB
SET STOCKA.U =  STOCKA.U - ABS(STOCKB.U)
WHERE
STOCKA.P = STOCKB.P
4

2 に答える 2

0

それぞれの「b」テーブルに1行しかない場合、質問のクエリは機能するはずPです。複数の行が存在する可能性がある場合は、最初に集計してから結合します。

UPDATE STOCKA a join
       (select P, sum(abs(u)) as bu
        from STOCKB
        group by P
       ) b
       on a.P = b.P
    SET a.U =  a.U - b.bu;
于 2013-10-17T22:37:07.917 に答える
0

UPDATE ステートメントで 2 つのテーブルを渡そうとする代わりに、JOIN を使用します。

UPDATE STOCKA a
JOIN STOCKB b
    ON a.P = b.P
SET a.U =  a.U - ABS(b.U)
于 2013-10-17T22:28:46.227 に答える