我有一个表Email
,其中有一个列Email
,其中包含所有电子邮件,还有一个表peronaldomains
,其中有一个列,其中domains
包含所有域
我想更新Email
表中的列,无论域与表中的列匹配的电子邮件,email_type_id
我都想更新email_type_id = 2
为domains
personaldomains
eg abcd.abc.com
,efgh.abc.com
,ghik.abc.com
在Email
列email
表中有abc.com
在domains
列personaldomains
表
该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
由于您已经有此表达式:
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)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句