0

1対多の関係にある2つのテーブルのテーブルがあります。結果が 1 つの場合にのみ、関連するテーブルの FK を使用してテーブルを更新する更新スクリプトを実行したい (複数ある場合は、別の方法でどれを使用するかを決定する必要があるため)

これが私がこれまでに持っているものです:

UPDATE import_hourly_event_reports i
   SET i.banner_id = b.banner_id
  FROM banner b
  JOIN plan p ON b.plan_id = p.id
 WHERE b.campain_id = i.campaign_id
   AND b.size_id = i.size_id
   AND p.site_id = i.site_id
HAVING COUNT(b.banner_id) = 1

ご覧のとおり、このHAVING句は期待どおりには機能しません。カウントが 1 の場合、バナー テーブルのバナーの ID でインポート テーブルの行を更新したいだけです。

4

1 に答える 1

1

どうですか

UPDATE import_hourly_event_reports i
   SET i.banner_id = b.banner_id
  FROM banner b
  JOIN plan p ON b.plan_id = p.id
 WHERE b.campain_id = i.campaign_id
   AND b.size_id = i.size_id
   AND p.site_id = i.site_id
   AND (SELECT COUNT(b1.banner_id)
          FROM banner b1
          JOIN plans p1 ON b1.plan_id = p1.id
         WHERE b1.campain_id = i.campaign_id
           AND b1.size_id = i.size_id
           AND p1.site_id = i.site_id) = 1
于 2010-05-04T20:46:17.123 に答える