从MySQL中选择数据不相同的行

时间:2015-09-03 20:32:30

标签: php mysql sql

所以我有一个聊天系统和一个带通知的顶部栏 我想要做的是加载用户聊天的最后X个人的最后一条消息 所以我不想用来自同一个人的X个消息来垃圾通知,但我想从X个人那里加载最后的消息

所以这是我的问题(例子): 想象一下,如果一个人向用户发送了8条消息,并且我将消息查询限制为8个结果。该查询将返回来自同一个人的8条消息,但我已经制作了一个PHP过滤器,它只回显一个人的1条消息。所以基本上这只会回复来自1个人的1个消息,但不会回应来自任何其他人的任何其他消息,因为我将结果查询限制为8并且此用户已经发送了8条消息

这是我的PHP过滤器(但我想在SQL中执行此操作)

foreach ($sideMess as $smes) {
    if (!isset($showedList[$smes['id']])) { 
        echo '<div class="mes_wrap" id="ppl_', $smes['id'] ,'">
            <img src="', $smes['avatar'] ,'">
            <h4>', $smes['firstname'] ,' ', $smes['lastname'] ,'</h4>
            </div>';

        $showedList[$smes['id']] = true;
        $cS ++;
    }
}

2 个答案:

答案 0 :(得分:1)

根据您的规范,您似乎需要来自多个用户的最后一条消息列表,即用户明确的最后一条消息。

select * from
(select * from
messages
order by user_id,message_time desc) temp
group by user_id;

答案 1 :(得分:0)

好的,它解决了! 我在ORDER BY之前使用了GROUP BY sender_id 谢谢你的帮助!