【问题标题】:How to find if a conversation between two users exists (in mySQL query)如何查找是否存在两个用户之间的对话(在 mySQL 查询中)
【发布时间】:2015-04-11 01:41:23
【问题描述】:

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

那么,假设用户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 很烂。

谢谢。

【问题讨论】:

  • 写一个查询找到他开始的对话,另一个查询找到他收到的对话,并将它们与UNION结合起来。

标签: mysql messaging


【解决方案1】:

这应该可以解决您正在尝试做的事情:

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

【讨论】:

  • 哦,这很简单。谢谢。
猜你喜欢
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-28
  • 2015-12-06
  • 1970-01-01
相关资源
最近更新 更多