我已经在 stackoverflow 上进行了搜索,但是现有的线程对我没有帮助,所以我发布了这个。
我的数据库架构:
user: user_id, displayname
message: id, sender_id, receiver_id, message, dateSent
我想要的是:
显示来自每个用户的最新消息列表 WHERE receiver_id = 4
我已经尝试过的:
MYSQL 从表 查询中选择最新帖子以仅从所有用户获取最后一条消息
仍然无法解决我的问题:(
我已经在 stackoverflow 上进行了搜索,但是现有的线程对我没有帮助,所以我发布了这个。
我的数据库架构:
user: user_id, displayname
message: id, sender_id, receiver_id, message, dateSent
我想要的是:
显示来自每个用户的最新消息列表 WHERE receiver_id = 4
我已经尝试过的:
MYSQL 从表 查询中选择最新帖子以仅从所有用户获取最后一条消息
仍然无法解决我的问题:(
试试这个:
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
选择 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
高温高压
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