8

年列を持つテーブルがあり、この列には重複する値があってはなりません。したがって、たとえば 2007 年のレコードが 1 つだけのテーブルになります。

では、年の値が重複している行を削除するにはどうすればよいでしょうか?

ありがとう

4

3 に答える 3

8

IGNORE を使用して UNIQUE INDEX を追加してみてください。

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`);

CREATE INDEXに関する MySQL のドキュメントを確認してください。よくある落とし穴 (少なくとも私が一度遭遇したもの) は、それNULL = NULLが真実ではないことを忘れることです (しかしNULL)。したがって、{42, NULL} と {42, NULL} は 2 つの列の UNIQUE インデックスに対して許可されます。

于 2010-10-05T08:27:45.673 に答える