mysql - 这里如何结合 GROUP BY 和 ORDER BY 呢?

标签 mysql database

我有一个数据库,其中包含一个名为“消息”的表。 colums 是'sender','reseiver','subject','time'(时间戳)。

在我的查询中,我想获取按主题分组的条目。 BUT 我想有相应的时间是最晚的。

例如,如果这是我的数据库:

person1   |   person2   |   hello   |   2019-06-24 20:0**7**:00
person2   |   person1   |   hello   |   2019-06-24 20:0**8**:00

我想得到这个:

subject: hello
last entry: 2019-06-24 20:0**8**:00

我无法将 ORDER BY 放在 GROUP BY 之前,所以我尝试了一个子查询:

SELECT subject, sender, receiver, time
FROM 
    (SELECT subject, sender, receiver, time
     FROM messages
     ORDER BY time DESC) AS subselect
GROUP BY subject

但它不起作用,我不明白为什么。

有人可以帮帮我吗?

最佳答案

SELECT subject,sender,reseiver,max(time) 
FROM messages
GROUP BY subject,sender,reseiver
ORDER BY max(time) DESC

您还应该按发件人、收件人分组,否则这些列的值不可预测。或者完全忽略这些列。

关于mysql - 这里如何结合 GROUP BY 和 ORDER BY 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56743232/

相关文章:

php - 将行列表从一个表传输到另一个表

php - 在表中插入表单值在 Codeigniter 中不起作用

sql - 在交易中设置时间戳

c++ - C++的基于文件的数据库

MySQL 性能 - CHAR(64) 与 VARCHAR(64)

sql - 无损分解

java - 检查数据库是否具有相同的值

mysql - Laravel - 查询自引用表

多个 FULLTEXT 索引上的 MySQL SELECT。结果极其缓慢

php - 在非对象上调用成员函数 fire_query()