最近のトラックバック

最近のコメント

2017年3月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

« 再帰クエリー | トップページ | 「SSDだとOracleは速い?」 »

2009年4月22日 (水)

重複行の削除(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以外のレコードは削除!ってことです

« 再帰クエリー | トップページ | 「SSDだとOracleは速い?」 »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/181317/44755113

この記事へのトラックバック一覧です: 重複行の削除(rowidを使ったやり方):

« 再帰クエリー | トップページ | 「SSDだとOracleは速い?」 »