2017-04-17 14 views
0

2行以外の重複データを削除するにはどうすればよいですか?2つ以外の重複データを削除

example

ID削除4なければならないので、 'マンガ' はすでにこれはMySQLで少し痛みが3行

答えて

2

有します。次の行を削除する識別します

select t.* 
from (select t.*, 
      (@rn := if(@n = nama, @rn + 1, 
         if(@n := nama, 1, 1) 
         ) 
      ) as rn 
     from t cross join 
      (select @n := '', @rn := 0) params 
     order by nama, id 
    ) t 
where rn > 2; 

は、あなたがそれから行うことができます使用して削除参加:

delete t 
    from t join 
     (select t.*, 
       (@rn := if(@n = nama, @rn + 1, 
          if(@n := nama, 1, 1) 
          ) 
       ) as rn 
      from t cross join 
       (select @n := '', @rn := 0) params 
      order by nama, id 
     ) tt 
     on t.id = tt.id 
    where tt.rn > 2; 
関連する問題