mysql - 从数据库中选择和排序消息

标签 mysql

<分区>

如果尝试选择数据库中的所有消息并将其显示给我站点的用户。

消息正在被选择和分组,但每组 user_id 的消息中最近的消息始终是发送的第一条消息。

我当前的代码是:

SELECT * 
FROM users_messages 
WHERE message_sender=? OR message_receiver=? 
GROUP BY message_receiver 
ORDER BY message_id DESC

显示的是用户发送的第一条消息,但我希望在用户组中选择最新消息。

我收到了所有用户的消息,并且用户的行按最近的对话排序。

但在最近的对话中,它会选择对话中发送的第一条消息

最佳答案

您需要的是像这样的相关子查询:

SELECT um.* FROM user_messages um 
WHERE um.message_id IN 
(
   (SELECT MAX(message_id) FROM users_messages WHERE 
    message_sender=? OR 
    message_receiver=? GROUP BY message_receiver)
)
ORDER BY um.message_id DESC

关于mysql - 从数据库中选择和排序消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32660788/

相关文章:

php - 有什么方法可以从外部来源查看 php POST 数据?

mysql - 数据库查询选择客户信息

mysql - 用于保存 Spring JPA 实体的 MySQL 驱动程序类是什么?

java - 我是否错误地为我的 transaction_login 方法实现了 Java 上的准备语句?我不确定何时出现 SQLExceptions

mysql - 一个查询上有两个单独的联接;对发往和来自一位用户的所有消息进行计数

php - 在 PHP 中使用变量更新 MySQL

php - 在另一个 mysql 查询 while 循环中调用 mysql 查询

php - 如何摆脱 � 使用 php

mysql - 如何更新一系列行号的列?

mysql - 在 SQL SUM expr 中可以做什么?