How to get last message of all users who did chat with UserID 1. I want to apply group by on two feilds. The Database is like:
MessageID Message MessageCreatorUserID MessageRecieverUserID CreatedAt 1 HI 4 1 2 Hello 1 3 3 Bye 1 3 4 Thanks 1 2 5 hii 1 3
This is table and My question is:
UserID is stored in MessageCreatorUserID or MessageRecieverUserID
I want to get last message of all users, who did the chat with UserID 1.
Advertisement
Answer
Well, you can use window functions:
select t.* from (select t.*, row_number() over (partition by (case when MessageCreatorUserId = 1 then MessageReceiverUserId else MessageCreatorUserId end) order by messageId desc ) as seqnum from t where 1 in (MessageCreatorUserId, MessageReceiverUserId) ) t where seqnum = 1;