SQL выбор, где A равно B и C - PullRequest
0 голосов
/ 02 апреля 2020
name | course
Jay | LAWS0001
Mark | LAWS0002
Sam | LAWS0002
Alice | LAWS0001
Ryan | LAWS0001
Ryan | LAWS0002

Привет, ребята, у меня есть эта база данных, и я хочу выбрать только те имена, которые принимают и LAWS0001, и LAWS0002. Поэтому из этого примера следует выбрать «Райан», потому что он единственный, кто прошел оба курса. Я попробовал оператор IN:

SELECT name
FROM student
WHERE course IN ('LAWS0001', 'LAWS0002')

, но для этого нужны все, потому что все проходят один из курсов.

Есть ли оператор для моей проблемы?

1 Ответ

0 голосов
/ 02 апреля 2020

Вы можете использовать свой существующий запрос, используя условие GROUP BY для COUNT количества отдельных курсов, которые каждый студент проходит в наборе ('LAWS0001', 'LAWS0002') и выбирая только тех студентов, у которых количество равно 2:

SELECT name
FROM student
WHERE course IN ('LAWS0001', 'LAWS0002')
GROUP BY name
HAVING COUNT(DISTINCT course) = 2

Демонстрация по SQLFiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...