重複の可能性:
MySQLテーブルの重複を削除する方法
プレーンテキストファイルにあるデータをmysqlデータベースにインポートしました。削除したいエントリが重複していることがわかりました。重複は、主キーではないキーによって識別されます。重複したアイテムの1つを保持する必要があることに注意してください。
テーブルT1には、3つの重複があります。例:
ID(一意、主キー)REAL_ID(char(11))
1 '01234567890' 2 '01234567891' 3 '01234567891' 4 '01234567891' ..。
今、私は使用します
SELECT ID AS x, COUNT(*) AS y FROM T1 GROUP BY x HAVING y>1;
重複を識別するため。結果i
+ ------ + ------------- + | ID | REAL_ID | + ------ + ------------- + | 1 | 01234567891 | | 2 | 01234567891 | | 3 | 01234567891 | + ------ + ------------- +
削除する必要のあるIDのリストを作成することもできます。
SELECT ID
FROM T1
RIGHT JOIN ( (SELECT ID AS x, COUNT(*) AS y
FROM T1
GROUP BY x
HAVING y>1) AS T2 ) ON (T2.x=T1.REAL_ID) LIMIT 1,100;
結果は
+ ------ + ------------- + | ID | REAL_ID | + ------ + ------------- + | 2 | 01234567890 | | 3 | 01234567890 | + ------ + ------------- +
今、私はこれらのエントリを削除する方法についての助けが必要です。
DELETEをサブクエリと組み合わせて使用することはできないため、REAL_ID列の重複するすべてのエントリにフラグを付けてから、
DELETE FROM T1 WHERE REAL_ID='flag';
しかし、これらのエントリにフラグを立てる方法がわかりません。