重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

以下のようなテーブルがあるとします。

user_id email_address type
A    a@b.com    1
A    a@b.com    2
A    b@b.com    3
B    c@b.com    1
B    d@b.com    2
B    e@b.com    3
B    e@b.com    4

このテーブルから、同じuser_idでemail_addressがtype = 1のものを含まないレコードを抽出したいと考えています。

出力結果
user_id email_address
B    c@b.com    1
B    d@b.com    2
B    e@b.com    3
B    e@b.com    4
このような結果を得たい場合、どのようなSQL文を記述すればいいでしょうか?

質問者からの補足コメント

  • 質問を改めます。

    同じuser_idでtypeが1のemail_addressが、type= 2、3、4のemail_addressと合致しないレコードだけを抽出したいです。

      補足日時:2016/01/29 18:21
  • 質問内容をあらためで、補足を入力しました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/01/29 18:22

A 回答 (2件)

ちょっと微妙かなぁ・・・・


SELECT * FROM hoge
WHERE user_id IN (
SELECT t1.user_id FROM hoge as t1
INNER JOIN hoge as t2
ON 1
AND t1.user_id=t2.user_id
AND t1.email_address=t2.email_address
AND t2.type=1
GROUP BY user_id
HAVING COUNT(*)=1
);
みたいな感じ?
    • good
    • 0
この回答へのお礼

教えていただいたSQLで確認したところ、うまくデータが抽出できたようでした。ありがとうございました。

お礼日時:2016/01/31 17:00

「email_addressがtype = 1のものを含まない」の定義がよくわからない



>B    c@b.com    1
ってtype=1ですよね?
もうすこしわかりやすい説明がほしい
この回答への補足あり
    • good
    • 0

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

関連するカテゴリからQ&Aを探す