删除重复值T-SQL的1个实例

LaL*_*aLa 6 sql t-sql sql-server-2008-r2

我目前有一张叫做People的桌子.在此表中,有数千行数据遵循以下布局:

gkey |    Name |  Date       | Person_Id
1    |    Fred |  12/05/2012 | ABC123456
2    |    John |  12/05/2012 | DEF123456
3    |    Dave |  12/05/2012 | GHI123456
4    |    Fred |  12/05/2012 | JKL123456
5    |    Leno |  12/05/2012 | ABC123456
Run Code Online (Sandbox Code Playgroud)

如果我执行以下操作:

SELECT [PERSON_ID], COUNT(*) TotalCount
FROM [Database].[dbo].[People]
GROUP BY [PERSON_ID]
HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC
Run Code Online (Sandbox Code Playgroud)

我得到了回报:

Person_Id     | TotalCount
ABC123456     | 2
Run Code Online (Sandbox Code Playgroud)

现在我想只删除一行重复值,所以当我执行上面的查询时,我没有返回任何结果.这可能吗?

t-c*_*.dk 7

WITH a as
(
SELECT row_number() over (partition by [PERSON_ID] order by name) rn
FROM [Database].[dbo].[People]
)
DELETE FROM a
WHERE rn = 2
Run Code Online (Sandbox Code Playgroud)