2 回答
TA贡献1817条经验 获得超6个赞
如果您只想要最新的,因为您是为单个用户选择消息,您需要将 TOP 子句添加到您的选择语句中。
SELECT TOP 1
photo,forename,surname,m.status,datetime,m.type,message,timestamp
FROM messages m
LEFT JOIN users ON users.userID = m.fromid
WHERE toid = '$userID' ORDER BY datetime DESC
如果您想要多个用户的最新消息,您可能会对按 fromid 分组的消息进行自联接,并获取 fromid 和 max datetime 以过滤消息
SELECT
photo,forename,surname,m.status,datetime,m.type,message,timestamp
FROM messages m
inner join
(
SELECT fromid, max(datetime) as lastmessage
from messages
group by fromid
) as filter ON m.fromid = filter.fromid
LEFT JOIN users ON users.userID = m.fromid
ORDER BY surname, forename
TA贡献1818条经验 获得超7个赞
您可以使用相关子查询:
select m.*
from messages m
where m.timestamp = (select max(m2.timestamp)
from messages m2
where (m.toid, m.fromid) in ( (m2.toid, m2.fromid), (m2.fromid, m2.toid))
);
- 2 回答
- 0 关注
- 174 浏览
添加回答
举报