代码之家  ›  专栏  ›  技术社区  ›  Oluf Nielsen

基于另一个表中的记录更新SQL记录

  •  0
  • Oluf Nielsen  · 技术社区  · 7 年前

    我正在尝试运行一个比较两个表的查询。我有一个名为mw\u email\u blacklist的表格,这个表格保存着我被列入黑名单的大约20万封电子邮件的记录。在我的另一个表中,我得到了我的列表订阅者,他们有一个“状态”字段,可以等于“黑名单”,然后他们就不能收到电子邮件。

    两个表都有一个“email”字段,所以我的计划是基于email字段执行where子句。然而,这并没有真正起作用。谁能帮帮我吗?

    包含的SQL:

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

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

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

    提前感谢!

    1 回复  |  直到 7 年前
        1
  •  1
  •   Alon Gadot    7 年前

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

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