仅当结果计数为1时,如何从另一个表中更新表?
-
03-10-2019 - |
题
我在一对一的关系中有一张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更新导入表中的行。
解决方案
怎么样
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
不隶属于 StackOverflow