Как мне обновить таблицу от другого стола, только если счетчик результата составляет 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.
Решение
Как насчет
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