0

サブクエリの結果をテーブルに保存しようとしています。

select (b.close - a.close) AS difference from day_ohlcs AS a inner join day_ohlcs AS b ON a.id + 1 = b.id

サブクエリの速度は速いですが、更新ステートメントに入れようとすると永遠にかかるので、何か間違ったことをしていることがわかります。

UPDATE day_ohlcs
SET price_change = t.difference
FROM (select (b.close - a.close) AS difference
    FROM day_ohlcs AS a 
    inner join day_ohlcs AS b 
    ON a.id + 1 = b.id) 
AS t
WHERE day_ohlcs.instrument_id = 1;

私は何を理解していませんか?前もって感謝します。

4

2 に答える 2

0

day_ohlcs次のように、結合する列を指定していないためだと思います。

UPDATE day_ohlcs
SET price_change = t.difference
FROM (select a.id, (b.close - a.close) AS difference
    FROM day_ohlcs AS a 
    inner join day_ohlcs AS b 
    ON a.id + 1 = b.id) 
AS t
WHERE day_ohlcs.instrument_id = 1 and day_ohlcs = t.id

実際には、サブクエリなしでこれを実行できるようです

update day_ohlcs as a set
   price_change = b.close - a.close
from day_ohlcs as b 
where b.id = a.id + 1 and a.instrument_id = 1
于 2013-10-14T19:41:30.120 に答える