1

一度に 1 つのフィールドを実行する方法を見つけました (以下の 2 つの更新クエリを参照してください)。単一のクエリでこれを行う方法はありますか?

UPDATE upload_data sd
SET
  photo_count =
  (SELECT sum(photo_count) 
  FROM media_uploads mu
  WHERE mu.user_id=sd.user_id
  AND mu.date=current_date
  GROUP BY mu.user_id);


UPDATE upload_data sd
SET
  video_count =
  (SELECT sum(video_count) 
  FROM media_uploads mu
  WHERE mu.user_id=sd.user_id
  AND date_trunc('month', mu.date)=date_trunc('month', sd.date)
  GROUP BY mu.user_id);
4

1 に答える 1

2

JOINでこれを行うことができると思いますUPDATEUPDATE構文としてのpostgresqlでは、次のようになります。

UPDATE upload_data sd
SET  sd.photo_count = m.photo_count,
     sd.video_count = m.video_count
FROM
(
  SELECT 
    user_id, 
    sum(photo_count) AS  photo_count, 
    SUM(video_count) AS video_count
  FROM media_uploads 
  WHERE mu.date = current_date
  GROUP BY user_id
) AS m 
WHERE m.user_id = sd.user_id;
于 2013-02-05T06:22:56.637 に答える