5 sql sql-server group-by sql-delete
我有这样的数据
Id Name AuthorId
----------------
1 AAA 2
2 BBB 2
3 CCC 2
4 DDD 3
5 EEE 3
Run Code Online (Sandbox Code Playgroud)
我需要一个查询,如果有超过 2 个,除了第一个和最后一个,它将按组 AuthorId 删除所有行。
比如上面的数据中,应该删除第二行,因为,对于AuthorId = 2,我有3行,但是对于AuthorId = 3,什么都不会被删除
Ser*_*erg 10
Row_number() 两次并删除非终端
delete t
from (
select *,
row_number() over(partition by [AuthorId] order by [Id]) n1,
row_number() over(partition by [AuthorId] order by [Id] desc) n2
from tablename
) t
where n1 > 1 and n2 > 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2602 次 |
| 最近记录: |