如何查找两个用户之间的对话是否存在(在 mySQL 查询中)

How to find if a conversation between two users exists (in mySQL query)

我想查找是否存在一个用户与其他用户之间的对话,并且从那里 select 只有其他参与者的姓名(在本例中,is/are 未通过身份验证,已与经过身份验证的用户聊天)。

所以,假设用户 1 已经与用户 56 聊天,我如何找到用户 1 有有过对话,不管是他发起的还是其他人发起的? messaging table 看起来像这样

 Columns:  | id | fromId | toId | msg |
             0    1        5      'hi'
             1    5        1      '..'
             3    1        6      '!'
             4    6        1      '?'
             5    1        5      '#'

我只需要每个用户的名字一次,所以查询结果应该是(对于用户1):

5, 6

到目前为止我有这个:

    SELECT * FROM `messaging`
    INNER JOIN (SELECT * FROM messaging
    WHERE `toId` = 1
    ORDER BY id DESC) a
    on (messaging.id=a.id)
    GROUP BY messaging.fromUser;

但是,当然,这只是 returns 如果其他用户向经过身份验证的用户发送消息的结果,反之亦然。如何将其他场景添加到此查询?这样它也可以找到 fromId = 1 的对话并获取 toId?

我意识到我可能无法很好地解释这一点,但我希望它是清楚的。我的母语不是英语,我很烂 mySQL.

谢谢。

这应该可以解决您的问题:

SELECT fromId AS userId FROM messaging
  WHERE toId = 1
UNION
Select toId AS userId FROM messaging
  WHERE fromId = 1;