我需要在用户之间开发一个私人消息系统,这就是我想要做的:
我有一张如下表:
id | from_user_id | to_user_id | message
1 | 1 | 2 | Hey n°1 ! <-- Me with user n°2
2 | 2 | 1 | Hey n°2 ! <-- Me with user n°2
4 | 1 | 3 | Hey n°3 ! <-- Me with user n°3
3 | 3 | 2 | Hey n°4 !
我们假设我是用户 n°1,我想获取我最后一条消息的列表“按用户分组”并按 id 排序,作为讨论:
id | with_user_id | message
4 | 3 | Hey n°3 !
2 | 2 | Hey n°2 !
我尝试过这样的请求:
SELECT id, message,
(CASE WHEN from_user_id = 1 THEN to_user_id ELSE from_user_id END) AS with_user_id
FROM privates
WHERE from_user_id = 1 OR to_user_id = 1
GROUP BY with_user_id
ORDER BY id DESC
但我得到了这个:
id | with_user_id | message
4 | 3 | Hey n°3 !
1 | 2 | Hey n°1 !
所以问题是它选择了用户 n°1 的第一条消息,而不是最后一条。