0

我有一个包含许多表的数据库,并且一个特定的表具有列:

  1. 姓名
  2. 电子邮件
  3. 不:
  4. 地址
  5. 开始日期(也包括时间)
  6. end_date(也包括时间)
  7. ID

我只需要选择满足以下条件的人的姓名和电子邮件地址:

  1. 他在列表中出现了两次
  2. 字段 Start_date 和 end_date 中的时间差必须为 10+分钟
4

2 回答 2

1

在 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
于 2012-06-27T20:19:53.563 回答
1

您可以像这样将表格连接到自身上:

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().

于 2012-06-27T20:31:53.373 回答