重複行の削除(rowidを使ったやり方)

これがその1(極値関数の利用)

DELETE FROM Products P1
WHERE rowid < ( SELECT MAX(P2.rowid)
                   FROM Products P2
                  WHERE P1.name = P2. name
                    AND P1.price = P2.price ) ;

EXISTSを使ったパターン(非等値結合の利用)

DELETE FROM Products P1
WHERE EXISTS ( SELECT * FROM Products P2
                 WHERE P1.name = P2.name
                   AND P1.price = P2.price
                   AND P1.rowid < P2.rowid );

つまりは、重複している行のうち、一番デカイROWID以外のレコードは削除!ってことです

ORACLE | SQL
2009/04/22




コメント(0)|コメントを書く

カテゴリー一覧
最近のコメント

このブログを友達に教える

コミュニティ | 有名人・芸能人ブログ | ケータイ占い | ケータイ小説 | 掲示板


画面TOP↑


powered by cocolog