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

时间:2015-04-11 01:41:24

标签: mysql messaging

我想查找是否存在一个用户与其他用户之间的对话,并从那里选择仅其他参与者的名称(在这种情况下,已经/未经过身份验证的用户,已经聊过)经过身份验证的用户)。

因此,假设用户1已与用户56聊天,如何找到用户1与之进行过对话的用户,无论他是开始还是其他人都这样做了? messaging表看起来像这样

 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;

但是,当然,如果其他用户向经过身份验证的用户发送了消息,则此操作仅返回结果,反之亦然。如何将其他方案添加到此查询中?这样它还可以找到fromId = 1和提取toId的对话?

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

谢谢。

1 个答案:

答案 0 :(得分:0)

这应该解决你想要做的事情:

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