sql >> データベース >  >> RDS >> Mysql

MySql:列の重複値に応じてテーブル行を削除しますか?

    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インデックスに許可されます。



    1. BLOBOracle10gへの画像の挿入

    2. MS SQL Server 2005でOVERがサポートされていませんか?

    3. MySQL 8のHibernate方言?

    4. Sphinxベータ版は本番環境で使用できますか?