我有一个“rel_type”表,有3个字段:id,id_customer,id_type,我必须唯一地获取id_customer只有值9和11作为id_type。因此,如果我有具有这两个值但具有其他值的recods,则不必提取它们。
我尝试过多种方式,但没有结果。
例如:
id | id_customer | id_type
--------------------------
1 | 123 | 11
2 | 345 | 9
3 | 123 | 9
4 | 788 | 5
5 | 788 | 11
6 | 788 | 9
7 | 788 | 4
我期待这个输出:123,这是唯一具有两个请求值且不超过这些值的id_customer。
我按照id_customer
分组,然后应用两个条件 - 总计数为2,9或11的记录数也是2:
SELECT id_customer
FROM mytable
GROUP BY id_customer
HAVING COUNT(*) = 2 AND
COUNT(CASE WHEN id_type IN (9, 11) THEN 1 END) = 2
你可以按id_customer
分组:
select id_customer
from tablename
group by id_customer
having min(id_type) = 9 and max(id_type) = 11 and count(distinct id_type) = 2