Dat is eigenlijk niet waar. Het zal een willekeurige rij retourneren. In de praktijk is dit vaak de eerste rij in de volgorde van de primaire sleutel, maar er is geen garantie. Andere databases dan MySQL staan deze oefening niet toe en geven een foutmelding.
Hoe dan ook, een manier om de hoogste ID van ongelezen berichten op te halen, is door tweemaal in de berichtentabel te komen. De tweede join zoekt alleen naar ongelezen berichten. Bijvoorbeeld:
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