我想显示用户和其他用户之间的最后一次对话(消息)以及其他用户的姓名和个人资料图片。Whatsapp 和 Messenger 主页是我想要实现的典型示例。
我有 2 个表:用户表和聊天表
用户表
user_id username photo
1 elexis img
2 rooney img
3 wayne img
聊天桌
id user_id friend_id message msg_time
1 1 2 hello 21-08-19 04:00
2 2 1 i'm good 21-08-19 04:00
3 3 1 hey 21-08-19 04:00
elexis 的预期结果应该是:
1 2 I'm good **promise** img 21-08-19 04:00
1 3 hey **wayne** img 21-08-19 04:00
promise 的预期结果应该是:
1 2 I'm good **elexis** img 21-08-19 04:00
但是,我得到的是:
1 2 hello **promise** img 21-08-19 04:00
2 1 hello **elexis** img 21-08-19 04:00
2 1 I'm good **promise** img 21-08-19 04:00
1 2 I'm good **elexis** img 21-08-19 04:00
3 1 hey **wayne** img 21-08-19 04:00
1 3 hey **elexis** img 21-08-19 04:00
我的代码是这样的:
SELECT c.*, u.username,
FROM users u
INNER JOIN (
SELECT user_id, friend_id,id, message
FROM chat
WHERE user_id = 1 OR friend_id = 1
UNION SELECT friend_id, user_id,id, message
FROM chat
WHERE friend_id = 2 OR user_id = 2
ORDER BY id DESC) c
ON c.friend_id = u.user_id