多くのテーブルを持つデータベースがあり、特定のテーブルに列があります。
- 名前
- Eメール
- 番号:
- 住所
- start_date (時間も含む)
- end_date (時間も含む)
- ID
次の条件を満たす人物の名前と電子メール アドレスのみを選択する必要があります。
- 彼はリストに2回登場する
- フィールド 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`
結果をループしながら、 を使用して有効な CSV データを簡単に作成できますfputcsv()
。