MySql - 如何在字段中查找具有2个特定值的记录,而不是更多

问题描述 投票:1回答:2

我有一个“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。

mysql sql select
2个回答
1
投票

我按照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

0
投票

你可以按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
© www.soinside.com 2019 - 2024. All rights reserved.