首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/MySQL消息传递系统

PHP/MySQL消息传递系统
EN

Stack Overflow用户
提问于 2014-02-06 06:46:47
回答 3查看 3.1K关注 0票数 2

嗨,我正在尝试用php和mysql制作一个消息传递系统。

mysql表很简单: id发送方接收者文本时间戳

我试图使消息有点像Facebook/Twitter,因此列表在“对话”中,并且查看了中的最后一条消息。

这就是我的自动取款机:

代码语言:javascript
复制
(SELECT * FROM messages WHERE receiver = 13 OR sender = 13 GROUP BY receiver,sender ORDER BY id ASC) ORDER BY id ASC
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-06 07:55:31

代码语言:javascript
复制
SELECT messages.* FROM messages, (SELECT MAX(id) as lastid FROM messages 
WHERE receiver = 13 OR sender = 13 
GROUP BY CONCAT(LEAST(receiver,sender),'.',GREATEST(receiver,sender))) as conversations
WHERE id = conversations.lastid
ORDER BY timestamp DESC

你需要的是聊天伙伴之间的独特对话。我已经用子查询模拟了这一点,希望这有帮助

票数 2
EN

Stack Overflow用户

发布于 2014-02-06 06:53:14

使用DESC获取新行,默认为ASC

代码语言:javascript
复制
   (SELECT * FROM messages WHERE receiver = 13 OR sender = 13 GROUP BY receiver,sender ORDER BY id DESC)

并在命令后设置限制 1 ,1

我觉得你需要

(receiver = '{receiver id}' AND sender = '{sender id}' ) OR (receiver ='{sender id}' AND sender = '{receiver id}' )

票数 1
EN

Stack Overflow用户

发布于 2014-02-06 06:49:57

UPDAte:我不确定它是否工作得很完美:

代码语言:javascript
复制
SELECT * FROM messages 
WHERE receiver = 13
GROUP BY receiver,sender 
ORDER BY timestamp DESC
LIMIT 1

UNION ALL
SELECT * FROM messages 
WHERE sender = 13
GROUP BY receiver,sender 
ORDER BY timestamp DESC
LIMIT 1

为了扭转这一秩序:

代码语言:javascript
复制
ORDER BY timestamp DESC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21595925

复制
相关文章

相似问题

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