I have a huge number of rows that I'd like to get say, last 5 records inserted in that database from 10 different users. If the same user inserted the last 3 rows into database, we must get one row, skip the others two and move to get a row per user, until it count up to 5.
A database like that:
user_id | news_id | title
1       | 1       | foo-1
2       | 2       | foo-2
3       | 3       | foo-3
1       | 4       | baa
4       | 5       | baa0
5       | 6       | baa1
5       | 7       | baa2
6       | 8       | baa3
7       | 9       | baa4
Should return:
user_id | news_id | title
1       | 1       | foo-1
2       | 2       | foo-2
3       | 3       | foo-3
4       | 5       | baa0
5       | 6       | baa1
The current filter was done by PHP, like this:
$used = array();
while ($data = mysql_fetch_array($query)) {
   $uid = $data['user_id'];
    if(in_array($uid, $used))
        continue;
    array_push($used, $uid);
// do something with data
}
But I want to refactor it, and do the filter purely by mysql, if possible. I don't know much MySql and that's why I'm having problem to archive this...
Here's what I've tried
select DISTINCT(user_id), news_id, title from XXX
WHERE GROUP BY (news_id) DESC
LIMIT 0,5
How can I do that?
 
     
     
    