我有一张桌子:
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
答案 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个朋友。