2014-09-04 115 views
0

我想显示每个用户的最后一条消息。 我写了这个MySQL请求,但它显示了一个用户的最后一条消息,以及来自其他用户的第一条消息。我不明白为什么。选择每个成员的最后一条消息

SELECT * 
FROM cbadminmessages 
    INNER JOIN cbmembres ON cbadminmessages.id_membre_message=cbmembres.id 
WHERE id!='$admin_id' 
AND id_message IN(
    SELECT MAX(id_message) 
    FROM cbadminmessages 
    GROUP BY id_membre_message) 
ORDER BY id_message"); 

id_message是消息的ID。 id_membre_message是谁写的消息的会员ID。

谢谢。

回答

0

您的子查询似乎不正确。您应该参考外部表格来选择每个特定用户的最大值。另外,使用表别名会有很大的帮助。

SELECT ad.id_membre_message, ad.id_message #and anything else you'd like to select 
FROM cbadminmessages ad 
INNER JOIN cbmembres mem 
ON ad.id_membre_message=mem.id 
WHERE mem.id!='$admin_id' 
AND ad.id_message = (
    SELECT MAX(ad_sub.id_message) 
    FROM cbadminmessages ad_sub 
    WHERE ad_sub.id_membre_message = mem.id) 
ORDER BY ad.id_message"); 
相关问题