如何按组删除所有行,并期望sql server中的第一个和最后一个?

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

我有这样的数据

Id Name AuthorId 
1  AAA  2
2  BBB  2
3  CCC  2
4  DDD  3
5  EEE  3

我需要一个查询,如果多于2,将按AuthorId组删除所有行,期望第一个和最后一个。例如,在上述数据中,应删除第二行,因为对于AuthorId = 2,我有3行,但是对于AuthorId = 3,则不会删除任何内容

sql sql-server group-by sql-delete
1个回答
0
投票

您可以尝试使用最小和最大id的联合,而不是此子查询的结果中的联合

delete from my_table 
where id  NOT  IN  (


    select  min(id) 
    from my_table 
    group by AuthorId 
    union 
    select max(id)
    from my_table 
    group by AuthorId 

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