Выбрать список значений по списку связанных значений
Есть таблица с полями: id, value
В таблице:
- для одного id могут содержаться несколько разных value
- для разных id могут быть одинаковые value
Пример таблицы:
| id | value |
|---|---|
| 1 | 2 |
| 1 | 3 |
| 1 | 5 |
| 2 | 2 |
| 2 | 6 |
| 3 | 5 |
Задача: на вход поступает список значений, составить запрос, который вернет список id, value которых строго входят в заданный список значений.
Пояснение: например в запросе приходит список значений [2,5] - значит запрос должен вернуть только 1й id, т.к. для него есть соответствующие value. Для 2го id есть value 2, но нет 5. Для 3го есть value 5, но нет 2.
Строго говоря список входящих значений должен являться подмножеством списка value для одного id, чтобы этот id вошел в выборку.
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
SELECT id
FROM table
WHERE value IN ( {список значений} )
GROUP BY id
HAVING COUNT( DISTINCT value ) = {количество уникальных значений в списке}