我有一个名为Email
的表,其中有一个名为Email
的列,其中包含所有电子邮件
另一个名为peronaldomains
的表有一个名为domains
的列,由所有域
我想要更新名为Email
的{{1}}表格中的列,我希望将其更新为email_type_id
,以查找email_type_id = 2
列中与domains
列匹配的电子邮件1}}表
personaldomains
表格eg abcd.abc.com
列中的 efgh.abc.com
,ghik.abc.com
,Email
在email
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
答案 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)))