2010-05-04 51 views
0

我有一個表中的一對多關係的2個表。我想運行一個更新腳本,它只會在有一個結果的情況下用相關表的FK更新表格(因爲如果有多個結果,那麼我們需要決定在另一個方法中使用哪一個)如何僅從另一個表中更新表如果結果計數爲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 
HAVING COUNT(b.banner_id) = 1 

正如你所看到的,HAVING條款並不完全工作,因爲我希望它。我只希望在與橫幅表的旗幟ID導入表更新該行如果計數等於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 
+0

,它總是會產生1因爲banner_id是唯一的。 – 2010-05-04 20:51:08

+0

我想他們已經離開了你的計數(b1.banner_id)。只是適應從計劃表中選擇計數。 – 2010-05-04 21:02:01

+0

我接受這個,因爲它是我解決方案的基礎。我還會對其進行編輯以使其對我的場景準確無誤。 – 2010-05-04 21:14:17

相關問題