【发布时间】:2012-12-20 00:35:27
【问题描述】:
请帮助我,我只想在收件箱中为每个用户显示一条消息(最新消息)。 因此,如果我与 user1、user2、user3 交换消息, 而不是像这样在收件箱中显示他们的所有消息:
user2 - message 6
user3 - message 5
user2 - message 4
user1 - message 3
user1 - message 2
user1 - message 1
我只需要像这样在我的收件箱中显示他们每个人的最新消息。
user2 - message 6
user3 - message 5
user1 - message 3
这是我的桌子。
+-----------------------------------------------------------------------------------+
| messages |
+-----------------------------------------------------------------------------------+
| message_ID | sender |receiver| date | subject | body | unread | delete1 | delete2 |
+-----------------------------------------------------------------------------------+
+---------------------+
| members |
+---------------------+
| id | username | ...
+----+----------+-----+
到目前为止,这是我的查询。
SELECT p.*, p.sender as sender, m.*
FROM messages p
LEFT JOIN members m ON p.sender=m.member_id
WHERE p.receiver='<CURRENT_USER>' AND delete2=0
GROUP BY p.sender ORDER BY p.date DESC
LIMIT 5
【问题讨论】:
-
请发布您的 SQL 而不使用构建它的代码以提高可读性。
-
这是 PHP 吗?然后添加适当的标签
-
首先,
SELECT p.*, p.sender as sender,你会得到名称/别名不明确的错误。什么设置了消息列的顺序? -
尝试使用 max(p.date) 而不是按它排序。
-
只是想知道,为什么会有相同的question?是作业吗?