2013-01-16 2 views
5

を持たないテーブル内の重複行を削除してください。上記の表には主キーはありません。私はこの場合</p> <pre><code>name ------ alpha alpha beta charlie charlie </code></pre> <p>のような項目どのように私は重複行を削除しますが、1つのレコードが残っているはずですが含まれているテーブルのアイテムを持っている主キー

RENAME TABLE `testTable` TO `testTable2`; 

CREATE TABLE `testTable` 
SELECT DISTINCT `name` FROM `testTable2`; 

OR自分フィールド上にUNIQUE INDEXを追加します。

答えて

3

は、そのテーブルを再作成し、この

DELETE FROM item WHERE GREATEST(0,@num := IF(NAME = @NAME, @num + 1, 0),LEAST(0, LENGTH(@NAME := NAME)))>0 
1

を試してみてください。

ALTER IGNORE TABLE `tableName` 
    ADD UNIQUE INDEX (`name`) 
+0

私はユニークなインデックスを適用したくありません。重複した行を削除するクエリを実行したいだけです。 – sureyn

+0

@sureyn:一意のキーを適用しないと、同じ問題が再度発生します。常に清掃するのではなく、そのような状況を防ぐ方が良いです。 –

+0

@a_horse_with_no_name:あなたは間違いませんが、懸念事項は削除クエリを実行して1つのレコードを除く重複行を削除することだけです。私の問題は解決されており、多くのご協力いただきありがとうございます。 – sureyn

関連する問題

 関連する問題