SQL问题 - 如何从两个表中选择属于域列表的所有电子邮件?

Ali*_*Ali 1 php mysql sql

我这里有两个表:一个包含订阅者电子邮件列表:

(ID, email)
Run Code Online (Sandbox Code Playgroud)

另一个包含域名列表:

(ID, domain)
Run Code Online (Sandbox Code Playgroud)

我想找出一个sql语句,允许我使用select *属于域表中列出的域的电子邮件地址,假设所有电子邮件都是以下形式:

name@domain
Run Code Online (Sandbox Code Playgroud)

这可以在sql中完成还是我需要为此编写脚本?

Dan*_*llo 5

您应该能够执行以下操作:

SELECT 
    sub_emails.email
FROM 
    sub_emails
INNER JOIN
    list_domains ON 
        (sub_emails.email LIKE concat('%@', list_domains.domain_name));
Run Code Online (Sandbox Code Playgroud)

请注意,这将需要全表扫描sub_emails,因为MySQL还不支持基于函数的索引.因此,如果sub_emails包含许多记录,这将变得非常慢.