2017-04-17 19 views

回答

2

這是在MySQL有點痛苦。以下標識行被刪除:

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;