SELECT STRAIGHT_JOIN
PreQuery.MessageID,
mh.Type,
mh.Subject,
mr.isread,
md.from_UserID,
md.body,
md.timestamp,
u.firstname,
u.lastname,
u.gender,
u.avatar
from
( SELECT md.messageid,
MAX( md.DtlID ) as LastDetail
from
message_detail md
group by
md.messageID ) PreQuery
JOIN message_recipient mr
ON PreQuery.MessageID = mr.MessageID
JOIN message_header mh
ON PreQuery.MessageID = mh.MessageID
JOIN message_detail md
ON PreQuery.LastDetail = md.DtlID
JOIN users u
on md.from_userid = u.userid
where
mr.userid = 5
and mr.isspam = '0'
and mr.isdelete = '0'
group by mr.messageid
order by
md.timestamp desc