2016-05-26 9 views
1

データベースから重複する行を削除しようとしています。これは同じ '入力'列と '応答'列です。今、私はすべての重複をSELECTクエリを持っていますが、私は重複を削除するクエリを記述するかどうかはわかりません。2つの特定の列の重複を持つ重複する行を削除する

SELECT * , COUNT(*) AS matches 
FROM allData 
GROUP BY input, response 
HAVING matches > 1 

私はDELETEクエリを書いている場合は、私はそれが何かをだろうと思います以下のような

DELETE FROM allData WHERE blah = blah 

^---しかし、それは私が「でグループ」「COUNT(*)」またはを選択することはできませんので、私はこれを正しく書く方法は本当にわかりません。どんな助けも素晴らしいだろう。

+0

プライマリキーとは何ですか? –

答えて

1

これを試してみてください;)

DELETE 
    T1 
FROM allData T1 
INNER JOIN (
    SELECT input, response 
    FROM allData 
    GROUP BY input, response 
    HAVING COUNT(1) > 1 
) T2 ON T1.input = T2.input AND T1.response = T2.response 

編集:

DELETE T1 
FROM allData T1 
INNER JOIN allData T2 ON T1.input = T2.input AND T1.response = T2.response AND T1.id > T2.id 

これは最低限のIDを持つレコードのままになります。 Delete all duplicate rows except for one in mysqlをご覧ください。

+0

Nope。これにより、重複しているすべての行が削除されます。 – frosty

+0

削除されていないオリジナルを残す必要があります。 – frosty

+0

良いこと私は最初にテストテーブルでこれを試しました...笑 – frosty

関連する問題