提问者:小点点

匹配两组数字以求相等


我有两张桌子:

聊天室: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匹配,以求相等,而不管它们在各自的集合中的顺序如何。

我在上面做的是字符串比较,这显然不是正确的方法。

谢谢大家。


共1个答案

匿名用户

我把它写成:

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;