I want to join these tables (task_id with post_id) which will return everything you see below. That's fine but what I want to do next is to remove duplicates of task_id while keeping the item that has the highest version.
I have 2 tables like so:
items
ID title task_id project_id version
1 "Test" 123 456 1
2 "Test 2" 124 456 1
3 "Test 3" 125 456 1
4 "X 3.1" 125 456 1.1
5 "X 3.2" 125 456 1.2
tasks
ID post_id meta_key meta_value
1 123 _completed 0
4 124 _completed 0
5 125 _completed 0
and I have this SQL statement so far:
SELECT *
FROM items t0
INNER JOIN tasks AS t1
ON t0.task_id = t1.post_id
WHERE t1.meta_key = '_completed'
AND project_id = 456
which returns:
ID title task_id project_id version ID post_id meta_key meta_value
1 "Test" 123 456 1 1 123 _completed 0
2 "Test 2" 124 456 1 1 124 _completed 0
3 "Test 3" 125 456 1 1 125 _completed 0
4 "X 3.1" 125 456 1.1 1 125 _completed 0
5 "X 3.2" 125 456 1.2 1 125 _completed 0
How can I remove duplicate task_id's but keep the highest version so the table will be:
ID title task_id project_id version ID post_id meta_key meta_value
1 "Test" 123 456 1 1 123 _completed 0
2 "Test 2" 124 456 1 1 124 _completed 0
5 "X 3.2" 125 456 1.2 1 125 _completed 0
Basically I am closest by ORDERing them BY version and the using GROUP BY task_id but apparently SQL does not let you do this.
Can anyone think of a good way to achieve this?