Sql server 从表中删除重复项
如何从表中删除重复项?我知道有很多这样的问题,但总的来说,有一个独特的专栏,在我的情况下,我没有一个独特的专栏。 基本上,我的桌子看起来像:Sql server 从表中删除重复项,sql-server,sql-server-2008,Sql Server,Sql Server 2008,如何从表中删除重复项?我知道有很多这样的问题,但总的来说,有一个独特的专栏,在我的情况下,我没有一个独特的专栏。 基本上,我的桌子看起来像: Name | LastName | someMoreData aaa | bbb | ccc ddd | eee | fff aaa | bbb | ccc 我想删除两行中的一行。没有关于标识和顺序的详细信息,仅根据您的示例,我可以提出以下解决方案: SELECT DISTINCT * INTO #t
Name | LastName | someMoreData
aaa | bbb | ccc
ddd | eee | fff
aaa | bbb | ccc
我想删除两行中的一行。没有关于标识和顺序的详细信息,仅根据您的示例,我可以提出以下解决方案:
SELECT DISTINCT * INTO #tmp FROM your_table;
GO
TRUNCATE TABLE your_table;
GO
INSERT your_table
SELECT * FROM #tmp
GO
DROP TABLE #tmp
从基本表到临时表tmp中选择唯一的行
从基本表中删除所有数据
将数据从临时表移动到基本表
删除临时表
尝试下面的解决方案并检查此项 阶段1:创建具有不同数据的临时表。您可以使用以下任何查询 假设:t1是您的表名
select * into ##t2 from (select Distinct * from ##t1) as T
or
SELECT DISTINCT * INTO ##t2 FROM ##t1
阶段2:清理现有表格。因此,您可以删除/截断表并重新创建它,或者另一种方法就是删除表中的数据,因为您不再需要这些数据了
drop table ##t1
or
Truncate table ##t1
or
delete from ##t1
阶段3:将数据插入到原始表中。记住,如果选择删除/截断,则必须使用Query1,否则必须使用Query2
问题1
问题2
注意:当执行drop/truncate时,表结构也会丢失,通过上面的Query1,我们也在创建结构 你可以这样做
with x as (select Name , LastName , someMoreData,rn = row_number()
over(PARTITION BY Name , LastName , someMoreData order by Name
)
FROM yourtable)
delete x where rn > 1
是否有任何东西使每一行都独一无二,或者你是说你只能通过查看所有列中的值来确定它是否是重复的?标记为重复的可能重复:StackOverflow上有多种解决方案。@NorbertvanNobelen我同意这已经被问了一百万次了,但你链接的是mysql,它被标记为sql server。可能的《谢谢》的复制品,效果很好从未考虑过添加行号以获得unike标识符
insert ##t1 select * from ##t2
with x as (select Name , LastName , someMoreData,rn = row_number()
over(PARTITION BY Name , LastName , someMoreData order by Name
)
FROM yourtable)
delete x where rn > 1