从搜索记录中检查mysql表中不存在的记录

从搜索记录中检查mysql表中不存在的记录,mysql,Mysql,我正在处理一个mysql查询需求 具有一个表的详细信息和以下详细信息 Id Emails 1 abc@mail.com 2 bbb@mail.com 3 ccc@mail.com 4 ddd@mail.com 5 eee@mail.com 6 fff@mail.com 7 ggg@mail.com 8 hhh@mail.com 9 iii@mail.com 10 jjj@mail.com 这是一张非常大的桌子,但我给你展示了一张示例桌子 有时我会收到一

我正在处理一个mysql查询需求

具有一个表的详细信息和以下详细信息

Id  Emails

1   abc@mail.com
2   bbb@mail.com
3   ccc@mail.com
4   ddd@mail.com
5   eee@mail.com
6   fff@mail.com
7   ggg@mail.com
8   hhh@mail.com
9   iii@mail.com
10  jjj@mail.com
这是一张非常大的桌子,但我给你展示了一张示例桌子

有时我会收到一份电子邮件列表,以便在详细信息表中检查它们是否存在

比如说,如果我收到电子邮件idabc@mail.com, bbb@mail.com及zzz@mail.com

我希望在要求中给出的三封电子邮件中,输出中不存在的电子邮件列表可以检查,即zzz@mail.com !!

根据给定的要求,查询什么样的电子邮件id不存在于表详细信息中(abc@mail.com, bbb@mail.com及zzz@mail.com)


提前谢谢

实现这一点的简单方法是:

SELECT * FROM {yourTable} WHERE eMails="the email address"
或对于多个:

SELECT * FROM {yourTable} 
WHERE eMails IN ({comma separated and quoted list of email addresses})
如果返回零记录,则电子邮件地址不存在

一个限制:根据DBMS设置,语句中的
限制为最大值。注意不要超过这一点,否则会出现错误或没有有效的响应


如果使用很长的列表,则将它们插入一个临时表中,并将该表与基表联接,以获取未使用的列表。

在SQL结果中获取不存在的内容是一件棘手的事情,因为要在结果集中显示,项必须存在于某个地方(作为列中的值,或作为查询中的硬编码值,或作为其中一个值派生的值)。由于要获取包含表中未显示的值的结果集,您需要执行多个查询。幸运的是,您可以嵌套它们

select addr, Emails from 
  (select 'abc@mail.com' as addr 
   union select 'bbb@mail.com' as addr
   union select 'zzz@mail.com' as addr) as fd
left outer join Details on Details.Emails = fd.addr
having Emails IS NULL
我们做了一系列的
union
-ed
select
s来构建一个搜索值的“表”。然后我们将该表连接到
详细信息
表,只保留连接失败的行(连接的表为
NULL


你只是想问什么
标准适用于哪里
吗?你尝试过什么?也许可以考虑使用
不在
中……欢迎使用。请阅读,这不是免费的编码、代码转换、调试、教程或图书馆查找服务,你还必须表明你已经做出了一些努力来解决自己的问题问题。@RiggsFolly,更新了问题,现在我希望问题的复杂性得到解决!!:)你想要什么总是很清楚的。您希望有人为您编写代码,但我们没有按照规范工作,甚至没有很好的规范。这一逻辑我知道,但我希望在要求中给出的三封电子邮件中,有一份不存在于输出中的电子邮件列表进行检查,即zzz@mail.com !!您必须添加检查循环或使用临时表解决方案。对于临时表,您可以使用
左连接
,其中telletable.value不为NULL
来保留不存在的值。您是否可以不在({电子邮件地址的逗号分隔和引用列表})中使用
@riggsfully,我不能Riggs,因为这将返回详细信息表中的所有电子邮件,但不在需要检查的邮件中!!哦,现在我明白这个问题了