multiscripter
@multiscripter

Как из таблицы выбрать записи по столбцу, имеющие одни значения и не имеющие другие?

Всем здравствуйте!
Есть таблица, заполненная тестовыми данными:
insert into ticket (user_id, type) values (1, 1);
insert into ticket (user_id, type) values (1, 2);
insert into ticket (user_id, type) values (1, 3);
insert into ticket (user_id, type) values (1, 4);
insert into ticket (user_id, type) values (2, 1);
insert into ticket (user_id, type) values (2, 2);
insert into ticket (user_id, type) values (2, 3);
insert into ticket (user_id, type) values (3, 1);
insert into ticket (user_id, type) values (3, 2);
insert into ticket (user_id, type) values (4, 4);
insert into ticket (user_id, type) values (5, 2);
insert into ticket (user_id, type) values (5, 3);
insert into ticket (user_id, type) values (6, 3);
insert into ticket (user_id, type) values (7, 1);

Как выбрать все user_id, у которых, например, type 2 и 3 и не 1 и 4? То есть запрос должен вернуть user_id = 5.
Или выбрать все user_id, у которых, например, type 1 и 2 и не 3 и 4? То есть запрос должен вернуть user_id = 3.
Результат нужно сгруппировать по user_id.
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT DISTINCT `user_id`
  FROM `ticket`
  WHERE `user_id` IN (SELECT `user_id` FROM `ticket` WHERE `type` = 2)
    AND `user_id` IN (SELECT `user_id` FROM `ticket` WHERE `type` = 3)
    AND `user_id` NOT IN (SELECT `user_id` FROM `ticket` WHERE `type` = 1)
    AND `user_id` NOT IN (SELECT `user_id` FROM `ticket` WHERE `type` = 4)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы