1

各トピックの重複と発生数を検出する次のmysqlクエリがあります。

SELECT name, 
 COUNT(name) AS NumOccurrences
FROM topics
GROUP BY name
HAVING ( COUNT(name) > 1 )

しかし、私がやりたいのは、見つかったすべての重複を削除することです。トピックごとに1つの一意の名前だけが必要で、重複はありません!! ありがとう

4

2 に答える 2

3
DELETE  t2
FROM    topics t1
JOIN    topics t2
ON      t2.name = t1.name
        AND t2.id < t1.id
于 2011-03-31T11:16:39.753 に答える
0

すべての一意のエントリを新しいテーブルにコピーします。

CREATE TABLE new_table as
SELECT * FROM old_table WHERE 1 GROUP BY unique_column_name;

データを確認し、すべてが正常であることが確認できたら古いテーブルを削除し、新しいテーブルの名前を古いテーブルに変更します。

次に、名前の列を一意にして、これを再度行う必要がないようにします。

乾杯

于 2011-03-31T11:11:56.810 に答える