MySQL获取最新的对话消息

标签 mysql sql database chat

我正在制作一个应用程序,用户可以在其中与其他用户聊天(一对一,而不是群聊)。我有一个 MySQL 表,用于存储来自每个用户的所有消息,例如:

from_id   to_id          message             time
abc123    def456         Hello               789
def456    abc123         What's up?          1234`
def456    abc123         How was last night? 2345
abc123    p0tat0         I missed the bus    3456
def456    p0tat0         I hate you :(       4567`
def456    another_user   I hate Potato!      5678`

如何获取从 AND 到 abc123 的最新消息(从最新到最旧排序),例如:

from_id to_id message time

abc123 p0tat0 I missed the bus 3456

def456 abc123 How was last night? 2345

如果重要的话,time 在消息表中将始终按升序排列。

任何帮助将不胜感激。谢谢^.^

SELECT *, 'from' as direction FROM messages WHERE from_username='admin' AND 'time' = ( SELECT MAX('time') FROM messages WHERE from_username='admin' OR to_username='admin' )

UNION ALL

SELECT *, 'to' as direction FROM messages WHERE to_username='admin' AND 'time' = ( SELECT MAX('time') FROM messages WHERE to_username='admin' OR to_username='admin' )

最佳答案

试试这个

SELECT * FROM
messageTable
WHERE from_id='abc123'
AND `time` = ( SELECT MAX(`time`) FROM messageTable WHERE from_id='abc123' )

UNION ALL

SELECT * FROM
messageTable
WHERE to_id='abc123'
AND `time` = ( SELECT MAX(`time`) FROM messageTable WHERE to_id='abc123' )

关于MySQL获取最新的对话消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57488906/

相关文章:

javascript - 如何在 BIRT 报告中多次运行一个表

php - 无法使用 AJAX 调用从 mysql 获取数据

MySQL 返回连续相同结果的第一条和最后一条记录

mysql - 如何通过排列两个表中的日期来检索两个表中的数据

mysql - Handlebars js 不呈现 mysql 查询返回的对象数组(在 nodejs 服务器中)

sql - 在sql中存储多个层次结构

c# - 内置数据库

php - PHP密码盐真的有必要吗?

jquery - MySQL 上的三表交集

php - 使用 PHP 更改 MySQL 日期的格式