everyone! I have a table in postgres 'chat'
id | channel_id | message | user_id | chat_created_date |
---|---|---|---|---|
1 | 4243 | hello | 23 | 2018-05-13 |
2 | 4243 | hello2 | 23 | 2018-05-11 |
3 | 4242 | hello | 23 | 2018-05-13 |
4 | 4242 | hello2 | 23 | 2018-05-11 |
I need to create query to get last message by unique channel_id with user_id
The result should be like this
channel_id | message | chat_created_date |
---|---|---|
4243 | hello | 2018-05-13 |
4242 | hello | 2018-05-13 |
CodePudding user response:
This can be done efficiently using the proprietary distinct on ()
in Postgres
select distinct on (channel_id) channel_id, message, chat_created_date
from chats
order by channel_id, chat_created_date desc