エンジニア的な技術的なブログ

webエンジニアの開発の知見を書きます。PHP、javascript、postgres、mysql、あと多少のインフラ周りとか。

SELECTした結果はそのまんまUPDATEできるよ! 

エンジニアならよくやると思うけど、

 

テーブルAの検索結果を集計なりなんなりして、

テーブルBに保存するっていうケース

 

UPDATEにFROM句つかってサブクエリやれば、さくっといける

SLECT結果をグルグルループしながらアップデートってのもあるけど、

件数多いと遅くてダメだから、この方法でやろうね。

 

あと、SQL一発の方が開発速度速いしね....

 

サンプルは下記↓

 

UPDATE exchange.dtb_range 

SET 

     products_count = prod.cnt 

FROM 

(SELECT 

     range_id, count(*) as cnt 

FROM 

    exchange.dtb_products 

WHERE 

    del_flg=0 

AND 

     status_id = 4 

GROUP BY

range_id) AS prod

WHERE 

exchange.dtb_range.range_id = prod.range_id

 

 

mysqlならスキーマは無しね!