繁体   English   中英

通过SQL与最新时间进行分组

[英]Grouping with latest time from SQL

我试图建立一个消息传递系统,但现在我陷入一个问题已经太久了。 当我执行查询时,它返回有时间的总行数,而不是最新行的时间。

有人知道我该怎么做吗?

这是我的查询:

SELECT i.`from` , SUM( i.`read` ) , COUNT( i.id ) , i.`time` , m.username
FROM  `messages` i
JOIN  `members` m ON i.`from` = m.`id` 
WHERE 1 
GROUP BY i.`from` 
ORDER BY i.`time` 

我努力了

MAX(i.`time`)

但这是行不通的。

不知道出了什么问题,但现在可以使用。 这是一个新的查询,如果有人想知道如何以及什么。

SELECT i.`to`, m.`username`, max(i.`time`)
FROM `messages` i
JOIN `members` m ON i.`to` = m.`id`
WHERE i.`from` = ?
GROUP BY i.`from`
ORDER BY i.`time`

如果您只想了解最新时间:

SELECT i.`time`
FROM  `messages` i
JOIN  `members` m ON i.`from` = m.`id` 
ORDER BY i.`time` DESC
FETCH FIRST 1 ROW ONLY

top 1或您的数据库支持的任何样式。

如果您希望from ,则可以这样做:

SELECT i.`from`, max(i.`time`)
FROM  `messages` i
JOIN  `members` m ON i.`from` = m.`id` 
GROUP BY i.`from`
ORDER BY 2

但是从您的问题来看,我认为您已经尝试过了吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM