IGNOREを使用してUNIQUEINDEXを追加してみてください:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);
MySQLは次のように応答する必要があります:
Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0
もちろん、ドロップする行を決定するのはMySQLに任せます。
編集:
これは、必要な数の列で機能します:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);
CREATEINDEX
に関するMySQLのドキュメントを確認してください。 。一般的な落とし穴(少なくとも1回は遭遇した)は、NULL = NULL
であることを忘れることです。 真実ではありません(ただし、NULL
)、したがって、{42、NULL}および{42、NULL}は、2つの列のUNIQUEインデックスに許可されます。