Mysql检查用户是否已与其他用户在同一组中

时间:2018-03-07 22:22:29

标签: php mysql

如何检查用户X是否与Y在同一组中?

我正在制作聊天应用程序,我需要知道用户X是否已经打开了与用户Y的聊天组。因为如果是,那么就不要创建新组。

userId   | chatGroup
---------|---------------------
X        | bananas
Y        | bananas
3        | oranges
...

像..

  $qry = $db->prepare('SELECT id FROM chatUsers WHERE userId = :userIdFrom AND chatGroup = "bananas" AND userId = :userIdTo AND chatGroup = "bananas"');
  $qry->bindParam(':userIdFrom', $userIdFrom, PDO::PARAM_INT);
  $qry->bindParam(':userIdTo', $userIdTo, PDO::PARAM_INT);
  $qry->execute();

3 个答案:

答案 0 :(得分:1)

您可以使用以下查询:

SELECT * FROM table_name t1
INNER JOIN table_name t2
ON t1.chatGroup = t2.chatGroup
WHERE t1.userId = 'X'
AND t2.user_id = 'Y'
AND t1.chatGroup = 'bananas'

如果您不知道聊天室名称,则可以跳过查询中的最后WHERE条件。

答案 1 :(得分:1)

您可以使用子选择执行此操作:

SELECT 1 FROM chatUsers WHERE userID = :userIdFrom AND chatGroup = (SELECT chatGroup FROM chatUsers WHERE userID = :userIdTo)

第二个查询将为您提供第二个用户的组。然后,您将此组与第一个用户进行比较。

答案 2 :(得分:1)

这应该做的工作。

SELECT
    IF(COUNT(*) > 0,
    'yes',
    'no') AS AreTheyInSameGroup
FROM
    chatUsers t1
WHERE
    userID = : userIdFrom AND chatGroup IN(
    SELECT
        chatGroup
    FROM
        chatUsers t2
    WHERE
        userID = : userIdTo
)

这个想法取自@ infinitezero的回答。但我使用IN来搜索组+添加如果为了更好的澄清。