LoginSignup
1
0

More than 5 years have passed since last update.

【PL/SQL】重複レコードの抽出

Last updated at Posted at 2019-04-04

重複レコードの抽出

やりたいこと

以下のようなテーブルが存在した場合に「PRODUCT_CD」、「PRODUCT_NAME」が重複しているレコードを抽出します。

ID PRODUCT_CD PRODUCT_NAME PRICE
1 p001 ノート 350
2 p002 ボールペン 150
3 p002 ボールペン 100
4 p003 手帳 1000
5 p003 手帳 500
6 p003 手帳 350

重複レコードを1行にまとめて抽出

重複しているレコードをGROUP BYHAVING句を使用して抽出します。

SELECT product_cd,
       product_name,
       COUNT(1)             -- 重複している件数
FROM  product_tbl
GROUP BY product_cd, product_name
HAVING COUNT(1) > 1
;

抽出結果は以下のようになります。

PRODUCT_CD PRODUCT_NAME COUNT(1)
p002 ボールペン 2
p003 手帳 3

重複レコードを全件抽出

上記SQLでは重複レコードをまとめて抽出しましたが、重複レコードの内容を詳しく確認したい場合もあります。
その場合には下記のように対象データを副問い合わせを使用して抽出します。

SELECT *
FROM product_tbl
WHERE (product_cd, product_name) 
      IN (
         SELECT product_cd, product_name
         FROM product_tbl
         GROUP BY product_cd, product_name
         HAVING COUNT(*) > 1
         )
ORDER BY product_cd
;

抽出結果は以下のようになります。

ID PRODUCT_CD PRODUCT_NAME PRICE
2 p002 ボールペン 150
3 p002 ボールペン 100
4 p003 手帳 1000
5 p003 手帳 500
6 p003 手帳 350
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0