我想加入这些表(task_id with post_id),它将返回您在下面看到的所有内容。这很好,但我想接下来要做的是在保留具有最高版本的项目的同时删除task_id的重复项。获得列x的MAX,同时在列y上获得DISTINCT
我有一个2个表,以便:
项目
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
任务
ID post_id meta_key meta_value
1 123 _completed 0
4 124 _completed 0
5 125 _completed 0
,我有这样的SQL语句至今:
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
返回:
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
如何删除重复的TASK_ID的,但保持的最高版本,因此该表将是:
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
基本上我最近下令他们BY版本和使用GROUP BY TASK_ID但显然SQL做不让你这样做。
任何人都可以想出一个很好的方法来实现这一目标吗?
这个问题是问及SO无休止地回答。少数这些答案是正确的。此外,本手册还深入讨论了该主题。也就是说,如果你还在挣扎,请参阅http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-tobe -a-very-simple-sql-query – Strawberry
尝试在SELECT语句中使用'MAX(version)',并在'GROUP BY'子句中使用'task_id'。 – Viki888