I have a social network I am coding but it’s a bit different than others, in this case there is only ever one status show per user on a feed section.
So I need to sort the status by date with the latest ones on top but also group by the userID
unfortunately I can’t seem to get this working….
This is my current query:
SELECT *
FROM status
WHERE userID != "83" #This is just so my statuses don't show
GROUP BY userID
ORDER BY addedDate DESC
LIMIT 10
I expect to see the latest status results and only one per user instead I see the first statuses so the group by is working but not the order by.
Thanks in advance.
As mentioned in the comments to Robin’s answer, that approach is unreliable because MySQL does not guarantee that it will always return the most recent status from each group. You must instead join your table with a subquery that selects the most recent status (based on
addedDate).Note that if a user has multiple status updates with the same
addedDate, the server will return all of them (whereas Robin’s query would return an indeterminate one); if you need control over such a situation, you will need to define how one determines which such status update should be selected.