我正在尝试制作类似于facebook的消息系统。我知道如何显示2个用户之间的所有消息,但我不知道如何制作这个
这是我的数据库
答案 0 :(得分:1)
你想要的基本上是这个,但如果它开始增长,性能会变得非常糟糕。
SELECT sender_id, receiver_id, body, is_read
FROM table
WHERE deleted_by IS NULL AND receiver_id = x
-- WHERE deleted_by IS NULL AND (sender_id = x OR receiver_id = x)
GROUP BY sender_id, receiver_id
ORDER BY created_at DESC
请注意,这是一个没有明确处理仅在MySQL中有效的非分组列的组。在PostgreSQL中,您可以使用DISTINCT ON()
干净地解决这个问题,但这应该可以解决MySQL问题。