在查询中使用LIKE
而在使用NOT LIKE
时无法正常工作时,我遇到了一个很大的问题。
我将在下面发布查询:
select DISTINCT (mails), name
from disposable
JOIN (
SELECT DISTINCT (mail) as mails,
CONCAT(toys.firstname, ' ' , toys.lastname) as name
FROM toys2
join toys ON toys.userid = toys2.id
where ( (toyid = '27' or toyid = '29')
and status != 'Sold'
and toys.regdate >= '2017-01-01'
)
) as tab
WHERE tab.mails LIKE CONCAT('%@', disposable.email)
答案 0 :(得分:0)
我认为你想要的更像是以下内容。请注意,我稍微简化了架构,以便为SQL Fiddle做一些工作。
SELECT c.email, c.name
FROM customer c LEFT JOIN disposable d
ON SUBSTR(c.email, INSTR(c.email, '@')+1, LENGTH(c.email)-INSTR(c.email, '@')) = d.email
WHERE d.email IS NULL;
基本上,您在这里获取客户的域名并将其与disposable
表中的条目相匹配。最终的WHERE
子句使用IS NULL
来确定非一次性的客户电子邮件地址 - 使用IS NOT NULL
查找那些。
希望这有帮助。