用于查找电子邮件地址域的SQL查询

时间:2016-10-02 15:54:55

标签: mysql sql select

我有一张emails表和一张domains表。如何UPDATE电子邮件列设置domain_id foreign_key到表格域。

domain_id    domain
1            google.co.uk
2            google.com
3            domain.com
4            domain.gov.au

电子邮件

email_id     email                         domain_id
1            john@admin.google.co.uk
2            john@google.com
3            john@ne.domain.gov.au
4           john@domain.com

棘手的部分是电子邮件可以基于顶级域名或子域名。

2 个答案:

答案 0 :(得分:2)

这是一种方法:

update emails e join
       domains d
       on e.email like concat('%', d.domain)
    set e.domain_id = d.id;

注意:这不高效,因为它不会使用索引。但是对于一次性的努力,应该没问题。

答案 1 :(得分:1)

以下是使用LIKE运算符

执行此操作的一种方法
select E.email_id, E.email, D.domain_id
from Domains D 
Inner Join Emails E 
        ON E.email like concat('%',D.domain,'%')

以上查询可以转换为Update语句