2016-08-31 6 views
1

タイプAとタイプBの両方を持つcontract_idを見つけるにはどうすればよいですか?ここで他の列にいくつかの値を持つレコードを見つける

record contract_id  type 
1   1    A 
2   1    B 
3   2    A 
4   2    A 
5   3    B 
6   3    B 

、私は

それはタイプAとタイプの両方B.を持っているので

、我々は contract_id 1を見つけることを願ってありがとうございました。

+0

を。 AとBだけですが、私たちが望むタイプを示す簡単な方法があると思います。 AとB、Cのように。 – qqqwww

+0

少なくともタイプAおよびタイプB(および場合によっては他のタイプ)、またはタイプAおよびタイプBのみ? – Yakuza

答えて

2

あなたはGROUP BYHAVINGを使用することができます。

SELECT contract_id 
FROM YourTable 
WHERE type IN ('A','B') 
GROUP BY contract_id 
HAVING COUNT(DISTINCT type) = 2 
0

あなたがABレコードを選択するサブクエリにINNER JOINを使用することができます:はい、この例では

SELECT a.contract_id 
FROM 
    (SELECT record, contract_id 
    FROM Contract_type 
    WHERE [type] = 'A') as a 
INNER JOIN 
    (SELECT record, contract_id 
    FROM Contract_type 
    WHERE [type] = 'B') as b 
ON a.contract_id = b.contract_id 
関連する問題