ロビンの回答
へのコメントで述べたように 、MySQLは、各グループから常に最新のステータスを返すことを保証しないため、このアプローチは信頼できません。代わりに、(addedDate
に基づいて)最新のステータスを選択するサブクエリを使用してテーブルを結合する必要があります 。
SELECT *
FROM status
NATURAL JOIN (
SELECT userID, MAX(addedDate) as addedDate
FROM status
GROUP BY userID
) AS mostRecent
ORDER BY addedDate DESC
LIMIT 10
ユーザーが同じaddedDate
で複数のステータス更新を行っている場合は注意してください 、サーバーはそれらすべてを返します(Robinのクエリは不確定なものを返します)。このような状況を制御する必要がある場合は、どのステータス更新を選択するかを決定する方法を定義する必要があります。