0

次のようなテーブルがあるとします: (DB2 9.7.2)

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

ここで、これら 2 つの同一のレコードから 1 つだけが削除されるようなクエリを作成したいと考えています。どうすればこれを達成できますか?

私は考えることができます:から削除します。

また

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 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 に答える
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 に答える