У меня есть таблица messages_users, которая содержит пользователей, участвующих в беседе:
conversationId | userId
Поскольку цель состоит в том, чтобы в беседе могли участвовать несколько пользователей, одна строка равна одному пользователю.
Существует два типа разговоров: разговор с другом и групповой разговор с несколькими пользователями.Их отличает только количество людей в нем.
2 пользователя = разговор с другом
3 или более = групповой разговор
Я хочу разрешить пользователям открыватьразговор со своими друзьями по их идентификаторам (здесь, 1 и 2).Итак, мне нужно сделать SQL-оператор, который будет извлекать идентификатор диалога ТОЛЬКО, где находятся эти два пользователя.
Если я сделаю это, я получу все разговоры, в которых находятся эти два пользователя (если естьгрупповые разговоры с ними, например)
SELECT convId FROM messages_users WHERE userId IN (1,2)
Я пробовал это, но это не будет работать:
SELECT convId FROM messages_users WHERE userId IN (1,2) HAVING COUNT(userId) = 2
Также пробовал это, но тем не менее он будет получать мне все разговоры, которые онив:
SELECT convId FROM messages_users a INNER JOIN messages_users b ON a.convId = b.convId WHERE a.userId = 1 AND b.userId = 2