对于模棱两可的标题感到抱歉。
我有两张桌子:
表1:mailing_email
表2(动态表但现在是):membership
表1包含数据库中所有电子邮件帐户的列表以及一些辅助字段,例如名称。它还有一个名为communicate
的列。
communicate
基本上是subscribed
的术语。任何取消订阅链接都会将communicate
设置为false。
mailing_email
和membership
都有email
和communicate
列。
我需要编写一个查询,其中发生以下情况:
mailing_email.communicate
更新为membership.communicate
mailing_email.email
的当前状态membership.email
= mailing_email
。如果membership
中存在communicate
中不存在的电子邮件,{{1}}字段保持不变。
我如何以最快的方式做到这一点?每个表都会有这个同步命令经常运行的数千行。
答案 0 :(得分:4)
MySQL提供update join
语法:
UPDATE mailing_email
JOIN membership ON mailing_email.email = membership.email
SET mailing_email.communicate = membership.communicate