根据另一个表中的记录更新SQL记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据另一个表中的记录更新SQL记录相关的知识,希望对你有一定的参考价值。

我正在尝试运行一个查询,比较两个表。我有一张名为mw_email_blacklist的表,这张表记录了我列入黑名单的电子邮件的大约20万条记录。在我的另一张表中,我获得了我的列表订阅者,他们有一个“状态”字段,可以等于“黑名单”,然后他们无法收到电子邮件。

两个表都有一个“电子邮件”字段,所以我的计划是根据电子邮件字段执行where子句。然而,这并没有真正成功。有人可以帮帮我吗?

包含的SQL:

UPDATE
    `mw_list_subscriber` mls,
    `mw_email_blacklist` meb
SET
    mls.`status` = "Blacklisted";
WHERE
    mls.`email` = meb.`email`;

这个SQL实际上计算了一些可能是应该被列入黑名单的正确数量的电子邮件,但是在将它写入更新子句时我无法使其工作。

SELECT  count(ls.email) 
FROM mw_list_subscriber ls
WHERE EXISTS (
    select email from mw_email_blacklist eb
    WHERE ls.email = eb.email
)

提前致谢!

答案

如果我理解你的意图正确,一般的方法可能是:

UPDATE mw_list_subscriber mls , mw_email_blacklist AS meb SET mls.status='Blacklisted' WHERE mls.email = meb.email

以上是关于根据另一个表中的记录更新SQL记录的主要内容,如果未能解决你的问题,请参考以下文章

如何将 SQL 记录中的一个字段的值更改为另一个表中的值?

如何通过将一个表中的 id 与另一个表匹配来选择和更新一个表中的记录?

Oracle SQL 更新查询需要几天时间才能更新

通过在不同的表中查找来更新 SQL 中的记录

oracle 如何根据一个表中记录的变动更新另外一个表中相应的字段

SQL /peewee。如何根据另一个表的条件更新记录?