0

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

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

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

我能想到:删除;

或者

从 col1=3 处删除;

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

4

4 回答 4

1

如果LIMIT不起作用,这将:

DELETE FROM (SELECT * FROM tbl WHERE col = 3 FETCH FIRST ROW ONLY)
于 2012-09-14T07:29:58.090 回答
0

你不能使用限制条款吗?

DELETE FROM <table> WHERE <column>=3 LIMIT 1
于 2012-09-14T07:01:02.887 回答
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) ; 
于 2013-12-09T13:07:03.730 回答
0

试试这个

delete from table A (select row_number() over (partition by col1 order by col1 ) count,* from table) where A.count> 1
于 2014-01-04T09:19:53.593 回答