我试图制作一个消息传递系统,但是现在我遇到了问题太久了。 当我执行查询时,它返回有时间的行总数,而不是最新行的时间。
任何人都知道我该怎么做?
这是我的疑问:
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`
答案 0 :(得分: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
但是根据你的问题,我假设你已经尝试过了吗?