0

我试图制作一个消息传递系统,但我现在被困在一个问题上太久了。当我执行查询时,它会返回有时间的总行数,而不是最新行的时间。

有谁知道我该怎么做?

这是我的查询:

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`
4

1 回答 1

0

如果您只想要最新时间:

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

但是从您的问题来看,我假设您已经尝试过这个?

于 2013-09-02T22:01:02.890 回答