2016-08-31 2 views
1

Как найти , который имеет как тип A, так и тип B?Найти записи, которые имеют несколько значений в других столбцах

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

В здесь, я надеюсь, мы сможем найти contract_id 1, потому что есть и типа А и типа В.

Спасибо так много.

+0

В этом примере, да. Только A и B. Но я думаю, что есть простой способ указать, какой тип мы хотим. как A и B и C. Право? – qqqwww

+0

По крайней мере, тип A и тип B (и, возможно, некоторые другие) или только тип A и тип B? – Yakuza

ответ

2

Вы можете использовать GROUP BY и HAVING:

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

Вы можете использовать INNER JOIN на подзапросов, выбирающий A и B записи:

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