SQL QUERY многократный поиск в одной строке для поиска данных из другой строки в одной таблице

Мне нужна помощь с некоторым кодом

У меня есть таблица базы данных под названием «материал», и у меня есть эта информация:

+------+-------------+---------------------+ | id | member_id | group_id | +------+-------------+---------------------+ | 1 | 11 | aa | +------+-------------+---------------------+ | 2 | 22 | aa | +------+-------------+---------------------+ | 3 | 33 | aa | +------+-------------+---------------------+ | 4 | 44 | bb | +------+-------------+---------------------+ | 5 | 55 | bb | +------+-------------+---------------------+ | 6 | 66 | bb | +------+-------------+---------------------+ 

Мне нужно найти идентификатор группы, если я ищу всех 3 членов из одной группы

Что-то вроде:

 SELECT group_id FROM stuff WHERE member_id=11 and member_id=22 and member_id=33 

Я знаю, что запрос не валит, но я не знаю, как сделать его действительным.

Большое спасибо.

Эта проблема называется Relational Division .

 SELECT group_id FROM stuff WHERE member_id IN (11,22,33) GROUP BY group_id HAVING COUNT(*) = 3 
  • Демоверсия SQLFiddle

если member_id не уникален для каждого group_id , вам нужно иметь DISTINCT , чтобы считать только уникальные значения.

 SELECT group_id FROM stuff WHERE member_id IN (11,22,33) GROUP BY group_id HAVING COUNT(DISTINCT member_id) = 3 

Дополнительные варианты этой ссылки:

  • SQL Relational Division