0

重複の可能性:
Oracle のテーブルから重複行を削除する

これが私が現在持っているものの例です:

ID        Name1    Name2
ABC123    Bob      Jones
ABC123    Bob      Smith
ABC123    Bob      Hammond
DEF234    Tim      Whatever

上の表を次のようにしたいと思います。

ID        Name1    Name2
ABC123    Bob      Jones
DEF234    Tim      Whatever

ID フィールドが共有されているすべての行を削除したいのですが、どの行を保持または削除するかは気にしません。行の総数が一意の ID の数と等しいだけです。

4

3 に答える 3

3
DELETE FROM YOURTABLE Y WHERE ROWID > (SELECT min(rowid) FROM YOURTABLE X
WHERE X.ID = Y.ID)
于 2012-08-24T21:24:44.360 に答える
0

なんらかの理由でグローバルな一意の ID を持っていない場合は、次のようなものが機能するはずです。

DELETE FROM Table WHERE CONCAT(ID,Name1,Name2) NOT IN ( 
       SELECT MIN(CONCAT(ID,Name1,Name2)) FROM Table GROUP BY ID)
于 2012-08-24T21:24:53.177 に答える
0
 DELETE FROM your_table
      WHERE ROWID IN (
               SELECT rid
                  FROM (SELECT ROWID rid,
                           ROW_NUMBER () OVER (PARTITION BY ID ORDER BY ROWID) rn
                         FROM your_table)
                WHERE rn <> 1);
于 2012-08-25T07:18:51.980 に答える