2017-06-07 4 views
0

私はcol_2のすべての重複を削除し、最大の値を持つものだけを残したい次の表を持っています。MySQL 5.6 - 最高の値を持つものを除くすべての重複を削除する手順?

----------------------- 
| col_1 | col_2 | ... | 
----------------|-----| 
| 2  | 2 | ... | 
| 3  | 2 | ... | 
| 4  | 2 | ... | 
---------------------- 

は返します:

----------------------- 
| col_1 | col_2 | ... | 
----------------|-----| 
| 4  | 2 | ... | 
---------------------- 

は、しかし、私は残念ながら何のユニークなインデックスまたはキーが存在しないように私のテーブルを設計しました。

これを達成するためにはどのような手続きが必要ですか?

答えて

0

あなたがすることによってグループのカップルとは、参加

delete from my_table a 
inner join (
    select col_2 
    from my_table 
    group by col_2 
    having count(*)> 1 
) t on a.col_2 = t.col_2 
where (a.col_2, a.col_1) not in (
    select col_2, max(col_1) 
    from my_table 
    group by col_2 
    having count(*) > 1 
) 

が少なくとも重複行のみcol_2を取得していないためであるタプルを使用することがでない最大(COL_1)行を削除するためのものです

関連する問題