MySql-如何查找在字段中具有2个特定值且仅此而已的记录

时间:2019-03-25 16:55:39

标签: mysql sql select

我有一个``rel_type''表,其中包含3个字段:id,id_customer,id_type,我必须唯一地获取仅具有值9和11作为id_type的id_customer。 因此,如果我的Recod具有这两个值但又具有其他值,则不必提取它们。

我尝试了各种方法,但没有结果。

例如:

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。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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