+------+---------+--------+---------+---------+---------+
| id   | user_id | obj_id | created | applied | content |
+------+---------+--------+---------+---------+---------+
|    1 |       1 |      1 |       1 |       1 | ...     |
|    2 |       1 |      2 |       1 |       1 | ...     |
|    3 |       1 |      1 |       1 |       2 | ...     |
|    4 |       1 |      2 |       2 |       2 | ...     |
|    5 |       2 |      1 |       1 |       1 | ...     |
|    6 |       2 |      2 |       1 |       1 | ...     |
+------+---------+--------+---------+---------+---------+
I have a table similar to the one above. id, user_id and obj_id are foreign keys; created and applied are timestamps stored as integers. I need to get the entire row, grouped by user_id and obj_id, with the maximum value of applied. If two rows have the same applied value, I need to favour the maximum value of created. So for the above data, my desired output is:
+------+---------+--------+---------+---------+---------+
| id   | user_id | obj_id | created | applied | content |
+------+---------+--------+---------+---------+---------+
|    1 |       1 |      1 |       1 |       1 | ...     |
|    4 |       1 |      2 |       2 |       2 | ...     |
|    5 |       2 |      1 |       1 |       1 | ...     |
|    6 |       2 |      2 |       1 |       1 | ...     |
+------+---------+--------+---------+---------+---------+
My current solution is to get everything ordered by applied then created:
select * from data order by applied desc created desc;
and sort things out in the code, but this table gets pretty big and I'd like an SQL solution that just gets the data I need.
 
     
    