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