我有两张桌子:
聊天室:id(INT)
creator_user_id(INT)
聊天参与者:participant_user_id(INT)
chat_room_id(int-fr)
我想:
找到一个聊天室,其中用户1
是创建者,用户2&3
是唯一的参与者。
到目前为止我得到了什么:
SELECT rcc.*,
COUNT(*) as participant_count,
GROUP_CONCAT(rcp.user_id) as participants
FROM
`chat_rooms` cr
LEFT JOIN chat_participants cp on cp.chat_room_id = cr.id
WHERE rcc.user_id = 1
GROUP BY rcc.id
HAVING participant_count = 2 AND participants = '2,3' <--- this doesn't look nice
问题:
我有两组数字,我想匹配相等。Set2,3
是我的输入,我希望将它与group_concat(rcp.user_id)as participents
匹配,以求相等,而不管它们在各自的集合中的顺序如何。
我在上面做的是字符串比较,这显然不是正确的方法。
谢谢大家。
我把它写成:
SELECT cr.id
FROM chat_rooms cr
INNER JOIN chat_participants cp
ON cp.chat_room_id = cr.id
WHERE cr.creator_user_id = 1
GROUP BY cr.id
HAVING
COUNT(DISTINCT participant_user_id) = 2 AND
SUM(participant_user_id NOT IN (2, 3)) = 0;