1

我已经在 stackoverflow 上进行了搜索,但是现有的线程对我没有帮助,所以我发布了这个。

我的数据库架构:

user: user_id, displayname
message: id, sender_id, receiver_id, message, dateSent

我想要的是:

显示来自每个用户的最新消息列表 WHERE receiver_id = 4

我已经尝试过的:

MYSQL 从表 查询中选择最新帖子以仅从所有用户获取最后一条消息

仍然无法解决我的问题:(

4

3 回答 3

3

试试这个:

SELECT
  u1.displayname AS SenderName,
  m.date_sent,
  ...
FROM messages AS m1
INNER JOIN users AS u1 ON m1.sender_id = u1.id
(
   SELECT sender_id, MAX(dateSent) MaxDate
   FROM messages 
   GROUP BY sender_id
   WHERE receiver_id = 4
) AS m2  ON m1.sender_id = m2.sender_id
        AND m1.datesent  = m2.maxdate
于 2013-05-20T11:35:04.280 回答
0
选择 u.user_id、u.displayname、m.message
来自用户你
内部联接
(SELECT id, sender_id, receiver_id, message, MAX(dateSent) AS mdate
FROM 消息消息
其中receiver_id = 4
GROUP BY sender_id
) 作为 m
ON u.user_id = m.sender_id AND u.dateSent = m.mdate

高温高压

于 2013-05-20T11:46:02.987 回答
0
SELECT m.id, MAX as mDate, m.sender_id, u.displayname
FROM message m
LEFT JOIN user u ON u.user_id = m.sender_id
WHERE m.receiver_id = 4
GROUP BY sender_id
于 2013-05-22T09:14:35.273 回答