0

我有一个一对多关系中的 2 个表。我想运行一个更新脚本,仅当有一个结果时才使用相关表的 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 回答