从每个成员中选择最后一条消息


Select last message from each member

我想显示每个用户的最后一条消息。我写了这个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。

谢谢。

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

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");