消息数据库的SQL查询

时间:2013-08-20 22:20:41

标签: mysql

我正在尝试制作类似于facebook的消息系统。我知道如何显示2个用户之间的所有消息,但我不知道如何制作这个

enter image description here

这是我的数据库

enter image description here

1 个答案:

答案 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问题。