typecreate
という名前の列が 1 つだけあるという名前のテーブルがあります。name
varchar(16)
ここで、重複する名前をすべて削除し、そのうちの 1 つだけを残したいと思います。
例:
name1
name2
name3
name3
name3
name4
後は
name1
name2
name3
name4
ご意見をお聞かせください。
クエリを探していましたが、使用可能なクエリのほとんどはインデックスに関係していました。
typecreate
という名前の列が 1 つだけあるという名前のテーブルがあります。name
varchar(16)
ここで、重複する名前をすべて削除し、そのうちの 1 つだけを残したいと思います。
例:
name1
name2
name3
name3
name3
name4
後は
name1
name2
name3
name4
ご意見をお聞かせください。
クエリを探していましたが、使用可能なクエリのほとんどはインデックスに関係していました。
row_numberを使用します
WITH cte
AS
( SELECT name, row_number() OVER ( PARTITION BY name ORDER BY name ) AS row_num
FROM yourTable
)
DELETE FROM cte
WHERE row_num > 1
MySQLのインデックスは、データベースエンジンがデータを効果的に分割およびソートして、クエリをより効率的にするための方法です。インデックスで実行できることの1つは、データの特定の列またはフィールドに一意のエントリのみが含まれるように指定することです。このようなインデックスを作成すると、すでに保存されているデータを追加できなくなります。
インデックスのない列がすでにある場合、重複を削除することをお勧めする1つの方法は、一時テーブルを使用することです。元のテーブルからすべての一意の(異なる)名前を選択して、一時テーブルを作成します。次に、元のテーブルのすべてを削除し、レコードをコピーして戻します。その時点で、インデックスを追加することを検討してください。