I'm trying to use the below statement to get a list of messages for the logged in user. The issue is dispite using group and order by it doesnt always show the most recent message. Can anyone shed some light on this? Should I be using a subquery?

```sql
SELECT 
  messages.message_id,
  messages.message_parent_id,
  messages.message_project_id,
  messages.message_from_id,
  messages.message_from_email,
  messages.message_subject,
  messages.message_body,
  messages.message_sent_datetime,
  CONCAT(
    u_from.forename,
    ' ',
    u_from.surname
  ) AS from_x,
  GROUP_CONCAT(
    CONCAT(
      u_to.user_id,
      '||',
      u_to.forename,
      ' ',
      u_to.surname
    )
  ) AS to_x,
  m_recipients.recipient_message_read 
FROM
  messages 
  INNER JOIN users AS u_from 
    ON messages.message_from_id = u_from.user_id 
  INNER JOIN message_recipients AS m_recipients 
    ON messages.message_id = m_recipients.recipient_message_id 
  INNER JOIN users AS u_to 
    ON m_recipients.recipient_user_id = u_to.user_id 
WHERE (
    m_recipients.recipient_user_id = '$current_user_id' 
    OR messages.message_from_id = '$current_user_id'
  ) 
  AND messages.message_project_id = '$project_id' 
GROUP BY messages.message_parent_id 
ORDER BY messages.message_sent_datetime DESC 

```

Fiddle: <http://sqlfiddle.com/#!9/7fbfa/3>