如何从 DbVisualizer 中删除表中的重复行

Posted

技术标签:

【中文标题】如何从 DbVisualizer 中删除表中的重复行【英文标题】:How to delete duplicate rows from table from DbVisualiser 【发布时间】:2013-01-30 07:09:50 【问题描述】:

我有一个名为 ORG_MAP 的表,它包含 200 条记录,我执行了一个查询以将这 200 条记录复制到另一个名为 ORG_MAP_1 的表(ORG_MAP 的重复表),但发生的事情是相同的 200 条记录被插入到同一个ORG_MAP 表中。

现在我想删除那些重复的记录。我不知道该怎么做。

请帮助我。我用的是db Visualizer8.0.11版本。

我使用的查询是:

INSERT INTO METRICS.ORG_MAP (REPORT_END_DATE,ENTITY,ENTITY_TYPE,RELATIONSHIP,TARGET,TARGET_TYPE)
SELECT REPORT_END_DATE,ENTITY,ENTITY_TYPE,RELATIONSHIP,TARGET,TARGET_TYPE
FROM METRICS.ORG_MAP

【问题讨论】:

【参考方案1】:

我认为您的问题没有任何直接的解决方案 但我做了一些工作可能对你有用....

create table #table(id int,c varchar(2))
insert into #table values('1','a')
insert into #table values('1','a')
insert into #table values('2','b')
insert into #table values('2','b')
insert into #table values('3','c')
insert into #table values('3','c')
insert into #table values('4','d')
insert into #table values('5','d')

declare @table table(uid int,id int ,c varchar(2));


with tbl as (
    select ROW_NUMBER() OVER(ORDER BY id DESC) AS uid ,id,c from #table
) 

insert into @table select * from tbl

declare @tmpid int,@tmpuid int,@cnt int
declare tmpc cursor 
for select uid,id from @table;

open tmpc

fetch next from tmpc 
into @tmpuid,@tmpid

while @@FETCH_STATUS = 0
BEGIN
set @cnt = (select COUNT(id) from @table where id = @tmpid)
IF (@cnt > 1)
BEGIN   
    delete from @table where uid = @tmpuid      
END

fetch next from tmpc 
into @tmpuid,@tmpid

END 

CLOSE tmpc; 
DEALLOCATE tmpc;

select * from @table

drop table #table

【讨论】:

以上是关于如何从 DbVisualizer 中删除表中的重复行的主要内容,如果未能解决你的问题,请参考以下文章

如何从mysql中的表中删除重复的行

如何从命令行的 dbvisualizer 导出中删除模式名称

如何在从多个表中获取多行的同时删除 sql JOIN 中的重复项

从Oracle中删除表中的重复行

如何根据一个表中的特定值从3个表中删除行[重复]

从表中的多个重复项中删除特定记录