首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取MySQL数据库中两个人之间的最后通信数据

获取MySQL数据库中两个人之间的最后通信数据
EN

Stack Overflow用户
提问于 2015-04-21 17:03:01
回答 2查看 70关注 0票数 1

想象一下,我们有一个table,它在用户之间有以下消息

代码语言:javascript
复制
sender-id    receiver_id       mssg   
-----------------------------------
1               2               m1
1               3               m2
2               1               m3
1               4               m4
4               1               m5
4               2               m6
4               1               m7

我想要一个在MySQL中和其他人谈论用户的结果

与聊天应用程序拥有的内容相同。

对于用户1,我们应该有

代码语言:javascript
复制
[mssg chat counter]       chat with user id       last mssg
   ------------------------------------------------------
2                            2                          m3
1                            3                          m2
3                            4                          m7
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-21 18:13:29

如果您有id列,即UNIQUE AUTO_INCREMENT,则可以使用此查询:

http://sqlfiddle.com/#!9/17a9f/7

代码语言:javascript
复制
SELECT m1.*, m.mssg
FROM (
  SELECT IF(messagies.sender_id=1, messagies.receiver_id,messagies.sender_id) as opponent,
    COUNT(*), MAX(messagies.id) id
  FROM messagies
  WHERE messagies.sender_id=1 
    OR messagies.receiver_id=1
  GROUP BY opponent ) m1

LEFT JOIN messagies m
ON m.id  = m1.id
票数 1
EN

Stack Overflow用户

发布于 2015-04-21 17:21:56

看起来,您需要GROUP BY sender_idreceiver_id列,并获得具有最大timestamp列的行。

代码语言:javascript
复制
SELECT sender_id, receiver_id, mssg AS last_mssg, MAX(timestamp)
FROM messages
GROUP BY sender_id, receiver_id;

通过在查询中指定MAX(timestamp),MySQL只会在将其编译为GROUP BY时获取与之匹配的行,从而方便地获得所需的结果。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29778718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档