如何从sql中的表中获取和删除旧的重复记录

时间:2013-09-17 06:10:25

标签: sql oracle

我有一张桌子:

select * from tmp_dib;

1360       DIBAKAR  SE1  
1360       DIBAKAR  SE  
1361       JAI          SE1  
1361       JAI          SE  
1365       NITISH   SE1  
1365       NITISH   SE  

其中SE1是旧记录,SE是新记录。

通过以下查询,我获得了新记录。

select a.*  from tmp_dib a where rowid >
(select min(rowid) from tmp_dib b where a.ID=b.ID);

1360    DIBAKAR SE  
1361    JAI SE  
1365    NITISH  SE  

请帮我查询以获取旧记录的记录。我想获取旧记录并想要删除。

我想要的输出:

1360    DIBAKAR     SE1  
1361    JAI         SE1  
1365    NITISH      SE1

这是一个示例表(不是实际的表/数据)..我有一个大约10k数据的表,它在一个实时系统中。所以我需要用旧记录确定条目。

3 个答案:

答案 0 :(得分:2)

你不会引用第三列,而不是使用id?

您还没有指定列名称是什么,但我假设它名为Column3

DELETE TMP_DIB
WHERE Column3 = 'SE1'

答案 1 :(得分:0)

尝试使用rowid获取和删除旧记录。

DELETE FROM tmp_dib A WHERE ROWID <
(SELECT max(ROWID) FROM tmp_dib b WHERE A.ID=b.ID);

答案 2 :(得分:0)

表格中可能有最后更新日期,对吗?如果是,您可以使用以下查询

delete from tmp_dib where id||last update date in (select id,min(last update date) from tmpbid group by id having count(*)>1)