アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のようなAというテーブルがあったとします。
A1 A2 A3 A4 A5 A6 A7
------- ------- ------- ------- ------- ------- -------
AAAAAAA BBBBBBB CCCCCCC DDDDDDD EEEEEEE FFFFFFF GGGGGGG
AAAAAAA BBBBBBB XXXXXXX YYYYYYY EEEEEEE FFFFFFF GGGGGGG
ABCSHSM SDIASNA SIASJAO OPPPPPP YGUUUBU NINIINI LPLPLPL
この中でカラム「A1」and「A2」and「A5」and「A6」and「A7」が重複しているレコードを抽出させるにはどうしたらいいでしょうか?

いろいろやってみているのですが行値式が使えないDBです。
レコードの数も10万くらいあるので出来るだけ早めに抽出が出来ればいいのですが・・・
調べてみてもいるのですがなかなか重複を抽出されている方が少なく(重複の削除→DISTINCTは多いのですが・・・)困っております。
よろしくお願いします。
ちなみにDELETEはしません
SELECTのみです。



9i

A 回答 (2件)

SELECT DISTINCT T1.A1, T1.A2, T1.A3, T1.A4, T1.A5, T1.A6, T1.A7


FROM tblA T1, tblA T2
WHERE T1.A1 = T2.A1
AND T1.A2 = T2.A2
AND T1.A3 <> T2.A3
AND T1.A4 <> T2.A4
AND T1.A5 = T2.A5
AND T1.A6 = T2.A6
AND T1.A7 = T2.A7

という方法もあります。自己結合だからパフォーマンスはちょっと……

Oracleだと、ROWIDが使えるからDISTINCTはいらないですけどね。
    • good
    • 0

A1, A2, A5, A6, A7 でグループ化し、HAVING句でカウントが2以上のものに絞り込めば良いかと。


ただし、GROUP BYを行うのでパフォーマンスはかなり悪いかも知れません。

例) ---------------------------------------------------------------
SELECT A1, A2, A5, A6, A7 FROM A
GROUP BY A1, A2, A5, A6, A7
HAVING COUNT(*) > 1
------------------------------------------------------------------
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!