0

我有一张桌子:

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 数据的表,并且在实时系统中。所以我需要用旧记录识别条目。

4

3 回答 3

2

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

您尚未指定列名是什么,但我假设它称为 Column3

DELETE TMP_DIB
WHERE Column3 = 'SE1'
于 2013-09-17T06:16:26.207 回答
0

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

DELETE FROM tmp_dib A WHERE ROWID <
(SELECT max(ROWID) FROM tmp_dib b WHERE A.ID=b.ID);
于 2013-09-17T08:13:31.700 回答
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)
于 2017-10-20T20:20:00.907 回答