> select conversation_id, count(*), max(unread), max(updated_on)
> from messages
> where conversation_id in (<list of ids>)
> group by conversation_id;
>
> I use max(updated_on) to get the date of the most recent message in
> the conversation. Is there a way to return the ID of this message?

Assuming that the messages table has a column called msg_id,

  select t1.conversation_id, t2.c, t2.mun, t2.mup, t1.msg_id
  from messages t1,
       (select conversation_id cid, count(*) c,
               max(unread) mun, max(updated_on) mup
        from messages
        where cid in (<list of ids>)
        group by cid) t2
  where t1.conversation_id = t2.cid and t1.updated_on = t2.mup


Regards

Reply via email to