Itu tidak benar. Ini akan mengembalikan baris acak. Dalam praktiknya, ini sering kali merupakan baris pertama dalam urutan kunci utama, tetapi tidak ada jaminan. Basis data selain MySQL tidak mengizinkan praktik ini dan akan menimbulkan kesalahan.
Bagaimanapun, salah satu cara untuk mengambil ID tertinggi dari pesan yang belum dibaca adalah dengan menggabungkan tabel pesan dua kali. Gabung kedua hanya mencari pesan yang belum dibaca. Misalnya:
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