【问题标题】:SQL select total number of chats from messagesSQL从消息中选择聊天总数
【发布时间】:2017-07-22 16:36:02
【问题描述】:

如何从消息表中选择聊天总数。 例如,在我的表中,我有这些 cols: id(Auto Ic Primary Ky)/发件人/收件人/消息/时间/日期 因为它们当然会是用户之间的多条消息,例如可能是 6 行,其中发件人 7 和收件人是 8,所以我需要将每个这样的重复结果限制为一个。 当前sql代码:

SELECT *
FROM messages
WHERE sender = $u_id OR recipient = $u_id

【问题讨论】:

  • 对自动增量的引用(有点)表明您确实在使用 MySQL。我修复了标签。您应该编辑问题并提供 . ..好吧一个问题。样本数据和期望的结果会有所帮助。
  • 那么,您实际上想要所有不同的用户对(发件人/收件人)?
  • 如果有两行,sender=7, recepient=8sender=8, recepient=7,应该算一还是二?
  • @dnoeth 是的,如果这样的重复,它们将被视为“一次聊天”,因为这些消息仅在两个用户之间。我要输出的只是收件人 id 而不是我自己的

标签: mysql sql


【解决方案1】:

一般来说,您应该通过提取一组唯一的发件人/收件人组合,然后对它们进行计数来处理这些情况。像这样的:

SELECT COUNT(1) as TotalChats
FROM (SELECT DISTINCT Sender, Recipient
      FROM Messages
      WHERE Sender = $u_id OR Recipient = $u_id) as M

编辑:...基于 cmets,您实际上想要这个:

SELECT DISTINCT Recipient
FROM Messages
WHERE Sender = $u_id

但是您应该向您的问题添加示例数据和预期结果 - 这样会更清楚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2013-08-28
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多