SQL-在不保留原始行的情况下删除重复的行

问题描述 投票:1回答:3

如何根据选择的列删除重复的行而不保留原始行?在此示例中,基于名称和动物删除。

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
sql ssms
3个回答
0
投票

您可以将删除与按名称和具有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

0
投票

尝试一下:首先,在子查询中选择重复项。然后,删除所有结果


0
投票

我会使用exists

© www.soinside.com 2019 - 2024. All rights reserved.