- ベストアンサー
SQLテーブル仕様における重複データの取得と省略方法
- SQLテーブル仕様において、重複したメールアドレスを含むデータを全て取得する方法について悩んでいます。ただし、携帯の重複したデータは省きたいです。
- サブクエリを使用して、重複データの取得と省略を試みていますが、うまくいきません。
- シーケンシャルナンバーを利用してデータの重複を防ぐことはできますが、他に良い方法はあるでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 >携帯の重複したデータを省きたいです。 >これは重複していないデータは要らないの間違いでしょうか? どうやら仮定の解釈を間違えたようですね(汗) 前述のSQLは重複したもののみ抽出するモノです。 逆を行いたいのであれば、 having count = 1 にして下さい。
その他の回答 (1)
- geso775
- ベストアンサー率29% (15/51)
#間違ってたらごめんなさい。 >mailアドレスには重複したデータが含まれる場合に >全てのデータを取得したいのですが、携帯の重複したデータを省きたいです。 取得したいフィールドはこちらで num | id | mail | event | date >mailアドレスには重複したデータが含まれる場合に >全てのデータを取得したい のですよね。 >携帯の重複したデータを省きたいです。 これは重複していないデータは要らないの間違いでしょうか? 上記と仮定しますと select * from mail_table where mail in ( select mail from mail_table group by mail having count > 1) でいけるかと思います。 in句を使用しています、テーブルが大きい場合には向きませんので exist句に直してください^^;
補足
早速の回答ありがとうございます。 上記のクエリーですと、やはり重複したデータが取得されるのですが、、、 emailはサブクエリーで重複したものを排除しても、クエリー側で検索されてしまいます。 同じemaiはテーブルに複数存在しています。 ですので、クエリー側でも値を出すときも重複したものは排除したいです。 distinctを使えばいいと思ったのですが、これですと、取得したいカラムの値が違う場合は取得できないですよね・・・。 私の説明がよくなかったので、すみません。
お礼
ありがとうございます。