0

多くのテーブルを持つデータベースがあり、特定のテーブルに列があります。

  1. 名前
  2. Eメール
  3. 番号:
  4. 住所
  5. start_date (時間も含む)
  6. end_date (時間も含む)
  7. ID

次の条件を満たす人物の名前と電子メール アドレスのみを選択する必要があります。

  1. 彼はリストに2回登場する
  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`

結果をループしながら、 を使用して有効な CSV データを簡単に作成できますfputcsv()

于 2012-06-27T20:31:53.373 に答える