Обновлять одну таблицу с выборкой из другой просто. Вот реально работающий случай в триггере "user.tr_user_after_update":
UPDATE user_prize_block,prize_fund SET user_prize_block.block="U"
WHERE
user_prize_block.fund=prize_fund.id AND
prize_fund.block_same_ip!="N" AND
prize_fund.block_same_ip_monitor_ip_changes="Y" AND
prize_fund.active="Y" AND
user_prize_block.id=NEW.id AND user_prize_block.block="N"
Ещё по теме с LEFT JOIN читать тут: https://stackoverflow.com/questions/1262786/mysql-update-query-based-on-select-query
UPD. Ещё более ранний пример с LEFT JOIN'ом, в mySQL-функции "refresh_company_active_banner".
UPDATE company
LEFT JOIN banner ON banner.company=company.id AND banner.active="Y" AND
(banner.active_campaign="Y" OR
(slimit="D" AND start<=CURRENT_DATE AND expire>=DATE_SUB(CURRENT_DATE, INTERVAL 3 MONTH)))
SET has_active_banner_campaign=IF(banner.id IS NULL,"N","Y")
WHERE IF(comp_id>0 AND comp_id IS NOT NULL, company.id=comp_id, 1);
UPD. Вот ещё удаление из одной таблицы, при выборке из двух:
DELETE category_favorit_audit
FROM category_favorit_audit,mark
WHERE category_favorit_audit.mark=mark.id AND mark.category=698
|