我有一个包含许多表的数据库,并且一个特定的表具有列:
- 姓名
- 电子邮件
- 不:
- 地址
- 开始日期(也包括时间)
- end_date(也包括时间)
- ID
我只需要选择满足以下条件的人的姓名和电子邮件地址:
- 他在列表中出现了两次
- 字段 Start_date 和 end_date 中的时间差必须为 10+分钟
在 mysql 中,您需要一个子查询:
select t.*
from t join
(select name, email, count(*) as cnt
from t
where time_to_sec(timediff(start_date, end_date)) > 10*60
group by name, email
having count(*) > 1
) dups
on t.name = dups.name and t.email = dups.email
您可以像这样将表格连接到自身上:
SELECT `a`.`name`, `a`.`email`
FROM `table_name` `a`
JOIN `table_name` `b` ON
(`a`.`name` = `b`.`name` OR `a`.`email` = `b`.`email`)
AND `a`.`id` != `b`.`id`
AND `a`.`end_date` < DATE_ADD(`a`.`start_date`, INTERVAL 10 MINUTE)
GROUP BY `a`.`name`
在循环结果时,您可以使用fputcsv()
.