我正在尝试根据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。
有人知道怎么做吗?
答案 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
我得到了预期的结果!
我切换了列,并从电子邮件中删除了子字符串。