私はそのようなテーブルを持っています:
Table eventlog
user | user_group | event_date | event_dur.
---- ---------- --------- ----------
xyz 1 2009-1-1 3.5
xyz 2 2009-1-1 4.5
abc 2 2009-1-2 5
abc 1 2009-1-2 5
上記のサンプルデータでは、信頼できるのは日付とユーザーだけであることに注意してください。私の責任の90%であるオーバーサイトを通じて、私はユーザーが毎日のエントリを複製できるようにすることができました。重複が期間の更新を目的とした場合もあれば、その日に使用していたuser_groupを変更しようとした場合もあれば、両方の場合もあります。
幸いなことに、(これは古いシステムへの更新であるため)レコードが正しいというかなり強い考えがあります。(基本的に、これはすべて、古いDBと新しいDBをシームレスにマージする試みとして発生しました)。
残念ながら、これは多かれ少なかれ手作業で行う必要があります。そうしないと、一方の側にのみ存在し、もう一方の側には存在しないデータが失われるリスクがあります。
簡単に言うと、特定の日付にユーザーのエントリが複数あるすべてのレコードを返す適切なMySQLクエリを見つけようとしています。私はGROUPBYとHAVINGに苦労してきましたが、私が得ることができる最善の方法は、重複ごとに2つの重複のうちの1つのリストです。これは、間違いであることが確実にわかっている場合に役立ちます。
これが私が来た最も近いものです:
SELECT *
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(user) > 1
ORDER BY event_date, user
これに関するどんな助けも非常に役に立ちます。必要に応じて、重複の各セットのユーザー/日付のリストを持っているので、手作業で400個すべてを削除できますが、一度にすべてを表示したいと思います。
ありがとう!