I've a SQL table which contains all the users and groups conversation in it. I'm able to retrieve group conversation from it easily but don't know how to retrieve last messages of each user from it.
You need to do it in two parts first get the latest messages, grouped by user Then fetch your messages against these
The perfect answer you need is
select messages.* from messages join (select max(creation) maxtime,user from messages group by user) latest on messages.creation=latest.maxtime and messages.user=latest.user;
Abvove will work even if you do not have a unique/primary key column like message_id, but if you really have it then i would recommend to use message_id instead of creation
you can see implemented SQL Fiddle Demo
Or With Subquery
select * from messages where message_id in (select max(message_id) from messages group by user)