mysql unique combination of 2 column values sort by another column -
i have sample data this
------------------------------------------ message_id | sender_id | receiver_id | message ------------------------------------------ 1 | 101 | 102 | hello 2 | 102 | 101 | fine 3 | 103 | 101 | you? 4 | 101 | 103 | @ home 5 | 103 | 101 | ok 6 | 101 | 102 | whats up? 7 | 102 | 104 | busy 8 | 105 | 101 | hey i latest message each dialogue in user 101 participant
expecting output
8 | 105 | 101 | hey 6 | 101 | 102 | whats up? 5 | 101 | 103 | @ home i need mysql query this.
thanks in advance.
e.g.:
select a.* my_table join ( select least(sender_id,receiver_id) user1 , greatest(sender_id,receiver_id) user2 , max(message_id) message_id my_table 101 in (sender_id,receiver_id) group user1 , user2 ) b on b.message_id = a.message_id; or just
select a.* my_table join ( select max(message_id) message_id my_table 101 in (sender_id,receiver_id) group least(sender_id,receiver_id) , greatest(sender_id,receiver_id) ) b on b.message_id = a.message_id; this can written follows. doubt makes difference performance...
select a.* my_table join ( select max(message_id) message_id ( select message_id , receiver_id user2 my_table sender_id = 101 union select message_id , sender_id my_table receiver_id = 101 ) x group user2 ) b on b.message_id = a.message_id; actually, in own limited tests, first queries complete in half time of last one.
Comments
Post a Comment