我有一个数据库,其中有一个名为“ messages”的表。列是“发送者”,“接收者”,“主题”,“时间”(时间戳)。
通过查询,我想获得按主题分组的条目。 但是我想将相应的时间设为最新的时间。
例如,如果这是我的数据库:
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
但是它不起作用,我不知道为什么。
有人可以帮我吗?
答案 0 :(得分:0)
我相信这就是您想要的:
SELECT subject,sender,reseiver, MAX(time) AS time FROM messages GROUP BY subject
所以,它是这样的:
WHERE
)subject
列对它们进行分组,因此现在我们具有相同主题的记录组time
列的最大值-但这是每个组的,所以,我想这就是您想要的如果您想以某种方式对组进行排序,只需在末尾添加另一个ORDER BY
,而无需任何子查询。
答案 1 :(得分:0)
SELECT subject,sender,reseiver,max(time)
FROM messages
GROUP BY subject,sender,reseiver
ORDER BY max(time) DESC
您还应该按发送者,接收者分组,否则这些列的值不可预测。或完全省略这些列。