基于PHP/MySQL的消息传递系统
嗨,我正在尝试用php和mysql制作一个消息传递系统 mysql表很简单: 身份证件 发件人 接受者 文本 时间戳 我正在尝试使消息有点像Facebook/Twitter,因此列表位于“对话”中,并查看对话中的最后一条消息 这就是我的atm机:基于PHP/MySQL的消息传递系统,php,mysql,messaging,Php,Mysql,Messaging,嗨,我正在尝试用php和mysql制作一个消息传递系统 mysql表很简单: 身份证件 发件人 接受者 文本 时间戳 我正在尝试使消息有点像Facebook/Twitter,因此列表位于“对话”中,并查看对话中的最后一条消息 这就是我的atm机: (SELECT * FROM messages WHERE receiver = 13 OR sender = 13 GROUP BY receiver,sender ORDER BY id ASC) ORDER BY id ASC 更新: 我不确定
(SELECT * FROM messages WHERE receiver = 13 OR sender = 13 GROUP BY receiver,sender ORDER BY id ASC) ORDER BY id ASC
更新:
我不确定它是否完美:
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
要颠倒顺序:
ORDER BY timestamp DESC
使用
DESC
获取新行,默认值为ASC
(SELECT * FROM messages WHERE receiver = 13 OR sender = 13 GROUP BY receiver,sender ORDER BY id DESC)
并在ORDER BY之后设置1,1
我想你需要
(接收方='{接收方id}'和发送方='{发送方id}')或(接收方='{发送方id}'和发送方='{接收方id}')
您需要的是聊天伙伴之间的唯一对话id。我用子查询模拟了这一点,希望这有帮助您可以在按关键字分组后按desc进行尝试。问题是我正在查看多个对话。我只需要查看每人1封,并查看对话中发送的最后一封邮件。您可以在ORDERTrue之后使用LIMIT 1,但这样我就看不到与其他人的对话。您能解释更多吗?因为我不明白你的意思,这是可行的,但我可以看到我发给别人的信息和他们回复的信息。我正试图使它成为显示的两个人之间发送的最后一条消息的一次对话。在我与其他人进行的按顺序对话未显示后设置限制1,1为任何聊天创建唯一会话,并为其设置
接收方
和发送方
。但我的答案是可以的!将receiver=13或sender=13
更改为receiver=13
谢谢!这不是我的问题,但我一直在寻找同样的东西,这是完美的工作!
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