使用另一个表更新表

时间:2014-08-15 17:14:38

标签: mysql sql

我有一个名为Email的表,其中有一个名为Email的列,其中包含所有电子邮件 另一个名为peronaldomains的表有一个名为domains的列,由所有域

组成

我想要更新名为Email的{​​{1}}表格中的列,我希望将其更新为email_type_id,以查找email_type_id = 2列中与domains列匹配的电子邮件1}}表

personaldomains表格eg abcd.abc.com列中的

efgh.abc.comghik.abc.comEmailemail abc.com列中domains personaldomains 1}}表

email表有大约600万行,personaldomains表有1213行。

我正在使用mysql

我用来创建personaldomains表的查询是

create table personaldomains
SELECT RIGHT(Email, CHAR_LENGTH(RTRIM(Email)) - Locate('@', Email)) Domains ,
COUNT(Email) EmailCount
FROM   email
WHERE  email_type_id = 2 and
CHAR_LENGTH(RTRIM(Email)) > 0
GROUP BY RIGHT(Email, CHAR_LENGTH(RTRIM(Email)) - Locate('@', Email))
ORDER BY EmailCount desc 

1 个答案:

答案 0 :(得分:3)

因为你已经有了这个表达式:

RIGHT(Email, CHAR_LENGTH(RTRIM(Email)) - Locate('@', Email))

我认为它类似

UPDATE email e
SET e.email_type_id = 2
WHERE
  EXISTS (
    SELECT 'x' 
    FROM personaldomains pd 
    WHERE pd.domain = 
      RIGHT(e.Email, CHAR_LENGTH(RTRIM(e.Email)) - Locate('@', e.Email)))