如何根据选择的列删除重复的行而不保留原始行?在此示例中,基于名称和动物删除。
ID Name Animal Fruit
1 Bob Dog Orange
2 Adam Dog Orange
3 Bob Dog Apple
4 Adam Cat Orange
5 Bob Cat Apple
6 Bob Hamster Apple
7 Adam Cat Apple
因此预期结果将是:
ID Name Animal Fruit
2 Adam Dog Orange
5 Bob Cat Apple
6 Bob Hamster Apple
您可以将删除与按名称和具有count> 1的动物分组的子查询结合使用>
delete m
from my_table m
inner join (
select name, animal
from my_table
group by name, animal
having count(*) > 1
) t on t.name = m.name
and t.animal = m.animal
尝试一下:首先,在子查询中选择重复项。然后,删除所有结果
我会使用exists
: