Поэтому у меня есть таблица типа, как показано ниже.
+----+----------+---------+ | ID | group_id | user_id | +----+----------+---------+ | 1 | 10 | 9 | | 2 | 20 | 8 | | 3 | 10 | 7 | | 4 | 10 | 6 | | 5 | 20 | 5 | +----+----------+---------+
У меня есть массив идентификаторов пользователей [9,7,6]
и я хотел бы получить идентификатор группы, где все идентификаторы находятся в одной группе?
Мой текущий запрос:
SELECT group_id FROM group_user WHERE user_id IN (9,7,6) GROUP BY group_id
Говорю, что я не слишком разбираюсь в SQL-запросах.
благодаря
РЕДАКТИРОВАТЬ
Я открыл новый вопрос с более подробной информацией и своей целью.
SQL, проверьте, существует ли диалог между группами
Вы можете использовать условную агрегацию, чтобы найти group_id, у которых есть требуемые user_id, связанные с ними.
SELECT group_id FROM group_user group by group_id having sum(case when user_id IN (9,7,6) then 1 else 0 end) = 3
Ваш запрос должен быть:
SELECT DISTINCT(group_id) FROM group_user WHERE user_id IN (9,7,6)
SELECT group_id FROM group_user WHERE user_id IN (9,7,6) GROUP BY group_id HAVING count(DISTINCT user_id) = 3 AND count(DISTINCT group_id) = 1
что все 3 идентификатора находятся в одной группе group_id и что они не находятся в какой-либо другой группе.