MySql - как найти записи, которые имеют 2 определенных значения в поле, и не более - PullRequest
1 голос
/ 25 марта 2019

У меня есть таблица "rel_type" с 3 полями: id, id_customer, id_type, я должен уникальным образом получить id_customer, который имеет только значения 9 и 11 в качестве id_type. Поэтому, если у меня есть записи, которые имеют эти два значения, но имеют другие, их не нужно извлекать.

Я пробовал разными способами, но безрезультатно.

Например:

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 ]

1 голос
/ 25 марта 2019

Я бы сгруппировал по 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 голосов
/ 25 марта 2019

Вы можете группировать по 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...