それは実際には真実ではありません。ランダムな行を返します。実際には、これは主キーの順序の最初の行であることがよくありますが、保証はありません。 MySQL以外のデータベースではこの方法が許可されておらず、エラーが発生します。
とにかく、未読メッセージの最大IDを取得する1つの方法は、メッセージテーブルを2回結合することです。 2番目の結合は、未読メッセージのみを検索します。例:
SELECT max(msg.ID) as MaxID
, messages.from
, max(unread.ID) as MaxUnreadID
, users.userName
FROM users
join messages msg
on users.ID = msg.from
and messages.to = ?
left join
messages unread
on users.ID = unread.from
and messages.to = ?
and unread.read = 0
GROUP BY
users.ID
, users.userName