わかりましたので、バックストーリーが必要な場合は、私の前の質問を見てください
重複していないレコードを特定するのは非常に簡単です。
SELECT *
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(*) = 1
ORDER BY event_date, user
これにより、重複していないものがすべて返されます。そこで、それらを「no_duplicates」という別のテーブルに移動してから、元のテーブルから削除しようと考えました。次に、元のテーブルで重複をすべて単独で確認し、それらを修正して、no_dupes を追加し直すことができました。しかし、一方で:
INSERT INTO no_duplicates
SELECT *
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(*) = 1
ORDER BY event_date, user
魅力のように機能しますが、次のエラーがスローされます。
DELETE
FROM eventlog
GROUP BY event_date, user
HAVING COUNT(*) = 1
ORDER BY event_date, user
私の推測では、クエリはテーブル内に既に存在する一意のレコードを返しますが、集計関数による削除は適切ではありません。移動したレコードのみが削除されるようにするために他に何ができるかわからないことを除けば、これは理解できます。検索したところ、「元のテーブルのレコードを INSERT で削除した後」という構文は見つかりませんでした。削除が失敗したのと同じ理由で、とにかく失敗すると思います。
それで、誰かが欠けているピースを見つけるのを手伝ってくれませんか?