mysql比较2个子字符串列

时间:2018-11-05 13:34:00

标签: mysql sql

我正在尝试根据emails表查找表中有多少个模拟域。

样本数据:

domains              emails
_______              ______ 
gmail.nl             test@google.com
gmail.com            test@gmail.com
gmail.uk

我尝试使用此查询:

SELECT (SELECT COUNT(*) FROM domains
    WHERE 
    right(domain, INSTR(domain, '.')-1) 
    LIKE 
    CONCAT('%', right(email, length(email)-INSTR(email, '@')), '%')) as "total",
    right(email, length(Email)-INSTR(Email, '@')) FROM emails GROUP BY email

在这里,我正在将一个表中的字符串的一部分与另一表中的另一子字符串进行比较。
看看这个DBFIDDLE:https://www.db-fiddle.com/f/kdf9iwaEPPz6kMpHqWhZkh/0

每行结果都为0,但对于gmail应该为3。
有人知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

我认为我会解决此问题:

这是我现在的查询

SELECT (SELECT COUNT(*) FROM domains
    WHERE 
    emails.email
    LIKE 
    CONCAT('%', LEFT(domain, INSTR(domain, '.')-1), '%') 
    ) as "total",
    right(emails.email, length(emails.email)-INSTR(emails.email, '@')) FROM emails GROUP BY emails.email

我得到了预期的结果!
我切换了列,并从电子邮件中删除了子字符串。