代码之家  ›  专栏  ›  技术社区  ›  Russ Bradberry

如果结果计数为1,如何从另一个表更新表?

  •  0
  • Russ Bradberry  · 技术社区  · 15 年前

    我有一张一对多关系的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更新导入表中的行。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Russ Bradberry    15 年前

    怎么样

    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