我正在尝试制作类似于 facebook 的消息传递系统。我知道如何显示 2 个用户之间的所有消息,但我不知道如何制作
这是我的数据库
你想要的基本上就是这个,但是如果它开始增长,性能会变得非常糟糕。
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 有用。