mysql在第二个元素之后从组中删除

时间:2016-12-01 17:56:36

标签: mysql

我有一张桌子:

ID     Friend
John    Rita
John    Jack
Jack    Rita
John    Tom
Rita    John

我想写一个查询,删除所有ID个超过2个元素的人。换句话说,我保留每个ID最多2 friends

我尝试使用group by或类似的东西,但我现在还不知道如何进行删除。

结果必须是:

ID  Friend
John    Rita
John    Jack
Jack    Rita
Rita    John

1 个答案:

答案 0 :(得分:2)

一种方法是加入分组表并删除无法建立连接的所有记录

delete t1
from your_table t1
left join 
(
   select id, min(friend) as f1, max(friend) as f2
   from your_table
   group by id
) t2 on t1.id = t2.id 
    and t1.friend in (t2.f1, t2.f2)
where t2.id is null

内部选择为每个ID获得2个朋友。