主キー列とテキスト列のみを持つテーブルがあります。テキスト列に重複した値があり、それらを削除したいです。
私は何を試しましたか
私は少しググって、答えだと思った ものをすぐに見つけました。それはこれでした:
ALTER IGNORE TABLE tablename ADD UNIQUE INDEX index_name (column1);
しかし、クエリを実行しようとした後、MySQL は「#1062 - キー 'remove_duplicates' のエントリ 'v&d' が重複しています」と言ってしまいました。そのため、しばらくいじった後、うまくいかないことがわかりました。
その後、tmp テーブルを作成して古いものを削除しようとしましたが、それもうまくいきませんでした。構文が間違っている可能性があります。
CREATE table `tmp` like `Tag`
alter table tmp add unique (text)
INSERT IGNORE INTO `tmp` SELECT * FROM `Tag`
RENAME TABLE `Tag` TO `deleteme`
RENAME TABLE `tmp` TO `Tag`
DROP TABLE `deleteme`;
私が欲しいものは
列「テキスト」の値が重複していないテーブル。以前の方法でエラーが発生した場合はお知らせください。または、別の方法で行う必要がある/可能だと思われる場合はお知らせください。
編集
私も PK にぶら下がっている関係があることを忘れていました (ええ、私が知っている非常に重要です)。他のテーブルとの関係も「保存」する方法はありますか? 必要に応じて、他のテーブルの ID を手動で変更できますが、それを変更する方法も素晴らしいでしょう。