Php 使用逗号分隔值进行搜索

Php 使用逗号分隔值进行搜索,php,mysql,Php,Mysql,我有两个表客户和imap\U电子邮件客户表包含客户的电子邮件 我正在使用PHP-IMAP从电子邮件服务器获取电子邮件,然后保存到数据库表IMAP\u emails imap_emails表有两个字段from和to和to字段包含逗号分隔的值 我需要从第一个表中获取电子邮件,然后在imap\u emails上搜索to和from 首先,我想到了要搜索的LIKE条件,但我希望有FIND\u IN\u SET或其他类似的条件 我如何才能以更好的方式实现这一点?(由于某些原因,我无法在此表中使用关系) 请给

我有两个表
客户
imap\U电子邮件
<代码>客户表包含客户的电子邮件

我正在使用PHP-IMAP从电子邮件服务器获取电子邮件,然后保存到数据库表
IMAP\u emails


imap_emails
表有两个字段
from
to
to
字段包含逗号分隔的值

我需要从第一个表中获取电子邮件,然后在
imap\u emails
上搜索
to
from

首先,我想到了要搜索的
LIKE
条件,但我希望有
FIND\u IN\u SET
或其他类似的条件

我如何才能以更好的方式实现这一点?(由于某些原因,我无法在此表中使用关系)


请给出建议。

基于“在集合中查找”进行联接的示例

SELECT *
FROM imap_emails
INNER JOIN customers
ON FIND_IN_SET(customers.email, imap_emails.to) > 0

您没有说明如何缩小范围(即,如果一封电子邮件使用两个电子邮件地址,您是否希望两封电子邮件都返回),因此在此阶段无法添加太多内容。

“字段包含逗号分隔的值。”红旗,使数据库正常化first@Dagon如何规范化此表??它只是电子邮件和从外部应用程序读取。我没有要保留的正确关系。搜索基于
Customer\u ID
。但是在插入到表中时,我不会获取
ID
。我将只获得一个电子邮件地址来搜索imap服务器。那么我如何创建一个键呢?在集合中查找将起作用(尽管它可能会很慢)。您可以在WHERE子句中使用多个FIND_IN_SET语句,每搜索一个电子邮件地址一个语句。最好是在插入/更新表时提取电子邮件地址,然后将每个地址放在另一个表中各自的行上。我理解你的问题,你在“发件人”中有大量电子邮件,你想在“收件人”中搜索(逗号分隔),你想一次推送所有电子邮件并给出结果,通过在循环中发送它们,可以从PHP中执行相同的操作