从表中删除重复条目

时间:2012-09-14 06:57:51

标签: db2 db2-luw

假设我有一个表如下:(在DB2 9.7.2上)

       COL1            COL2             COL3
-----------      ----------       ----------
          3               4              xyz
          3               4              xyz

现在我想编写一个查询,以便只删除这两个相同记录中的一个。我怎样才能做到这一点?

我能想到: 从中删除;

从col1 = 3;

中删除

但上述两个查询都会删除这两个记录,而我想保留其中一个。

4 个答案:

答案 0 :(得分:1)

如果LIMIT不起作用,则会:

DELETE FROM (SELECT * FROM tbl WHERE col = 3 FETCH FIRST ROW ONLY)

答案 1 :(得分:0)

你不能使用限制条款吗?

DELETE FROM <table> WHERE <column>=3 LIMIT 1

答案 2 :(得分:0)

这符合我的目的:

DELETE FROM tabA M 
WHERE  M.tabAky IN (SELECT tabAky 
                    FROM   (SELECT tabAky, 
                                   ROW_NUMBER() OVER (PARTITION BY tabAcol1,
                                                                   tabAcol2,
                                                                   tabAcoln)
                            FROM   tabA a) AS X (tabAky, ROWNUM) 
                    WHERE ROWNUM> 1) ; 

答案 3 :(得分:0)

试试这个

delete from table A (select row_number() over (partition by col1 order by col1 ) count,* from table) where A.count> 1