【发布时间】:2019-10-07 05:39:55
【问题描述】:
【问题讨论】:
-
你如何决定哪些是“好人”,哪些是“坏人”?
-
我认为这里的主要问题源于没有主键。
-
SQL Server 问题需要显示尝试
标签: sql sql-server
【问题讨论】:
标签: sql sql-server
您可以使用ROW_NUMBER():删除重复项:
with duplicates as
(
select
*
,ROW_NUMBER() OVER (PARTITION BY FirstName, LastName, age ORDER BY FirstName) AS number
from yourTable
)
delete
from duplicates
where number > 1
number 大于 1 的每一行都是重复的。
【讨论】:
Age 进行分区,而需要删除真正的重复项
您可以使用公用表表达式删除一组重复项中除第一条记录之外的所有记录:
with cte as (
select *, row_number()
over (partition by FirstName, LastName, Age order by FirstName, LastName, Age) as row_number
from tbl
)
delete from cte where row_number <> 1
【讨论】:
在没有 PK 的情况下,您需要某种方法来识别行。
我能想到的唯一方法是:
不过,我对这个解决方案并不乐观。我认为this answer 可以帮助生成独特的行ID。希望对你有帮助。
【讨论】: