That will however be incorrect SQL in direct violation of the standards and only executable using mysql in "quirks mode" or whatever their non-strict mode is called.
If you have a group by clause, each and every selected field must either
- be part of the group by clause
or
- be part of an aggregate function.
Moreover, even if you disregard proper SQL and try to use the group by some stuff only in combination with order by, the above would possibly get statuses from two friends - before the LIMIT 1 clause, which leaves you with 1.
To get the id of the latest update from one specific friend
SELECT MAX(id) AS id, member_id
FROM status
WHERE member_id=@some_member
GROUP BY member_id;
To get the corresponding text, use a join
SELECT t.id, status.text, t.member_id
FROM status
INNER JOIN
(
SELECT MAX(id) AS id, member_id
FROM status
WHERE member_id=@some_member
GROUP BY member_id;
) t ON t.id = status.id
And since the inner query uses the max aggregate function, it will be able to pull the highest id from any number of members in conjunction with the group by
SELECT MAX(id) AS id, status.member_id
FROM status
INNER JOIN friends ON status.member_id = friends.friend_id
WHERE friends.member_id = @my_id
GROUP BY status.member_id;
which combined with part 2 ought to give you what you need.