Sql server 如何删除SQL Server中除一条记录外的所有重复记录
我试图删除多条记录,但没有删除一条记录 输入:Sql server 如何删除SQL Server中除一条记录外的所有重复记录,sql-server,Sql Server,我试图删除多条记录,但没有删除一条记录 输入: Id Temp P_TempId ------------------------------------ AN #1001#.Test 5001,8001 AN #1001#.Test 5001,8001 AN #1002#.Test 5001,4001,7001,8001 AN #1002#.Test 5001,4001,7001,8001
Id Temp P_TempId
------------------------------------
AN #1001#.Test 5001,8001
AN #1001#.Test 5001,8001
AN #1002#.Test 5001,4001,7001,8001
AN #1002#.Test 5001,4001,7001,8001
AN #1002#.Test 5001,4001,7001,8001
输出:
Id Temp P_TempId
---------------------------------------
AN #1001#.Test 5001,8001
AN #1002#.Test 5001,4001,7001,8001
使用with对每组Id\u Temp、p\u TempId
进行编号,并删除编号大于1的部分
;with cte as (
select
*
, rn = row_number() over (
partition by Id, Temp, P_TempId
order by (select 1)
)
from t
)
delete
from cte
where cte.rn > 1
或者不使用cte,而是使用标准子查询:
delete s
from (
select
*
, rn = row_number() over (
partition by Id, Temp, P_TempId
order by (select 1)
)
from t
) as s
where s.rn > 1
rextester演示:
返回:
+----+-------------+---------------------+
| Id | Temp | P_TempId |
+----+-------------+---------------------+
| AN | #1001#.Test | 5001,8001 |
| AN | #1002#.Test | 5001,4001,7001,8001 |
+----+-------------+---------------------+
@冲锋呐,我错了。我错过了子查询中部分的
。现在更正。