Mysql 我怎样才能得到每项工作每个阶段的最后一行?

Mysql 我怎样才能得到每项工作每个阶段的最后一行?,mysql,Mysql,我花了太长时间试图解决此问题,我需要筛选此表: +----+-------+-------+ | id | jobID |stageID| +----+-------+-------+ | 1 | 1 | 1 | | 2 | 1 | 2 | | 3 | 1 | 2 | | 4 | 1 | 1 | | 5 | 2 | 2 | | 6 | 2 | 1 | | 7 | 2 |

我花了太长时间试图解决此问题,我需要筛选此表:

+----+-------+-------+
| id | jobID |stageID|
+----+-------+-------+
|  1 |     1 |     1 |
|  2 |     1 |     2 |
|  3 |     1 |     2 |
|  4 |     1 |     1 |
|  5 |     2 |     2 |
|  6 |     2 |     1 |
|  7 |     2 |     1 |
|  8 |     2 |     2 |
+----+-------+-------+
你看每个作业都有很多行,有不同的阶段,我需要得到每个作业的每个阶段的最后一行

例如,看看作业1。它有4行,每行有一个给定的阶段。我需要获取该作业的最后一个阶段条目,即第3行和第4行

对于完整的表,我需要得到第3、4、7和8行,如下所示

+----+-------+-------+
| id | jobID |stageID|
+----+-------+-------+
|  3 |     1 |     2 |
|  4 |     1 |     1 |
|  7 |     2 |     1 |
|  8 |     2 |     2 |
+----+-------+-------+
我想我会发疯的。我尝试使用
groupby
对各个阶段进行分组,但没有计算作业数。 你能帮我吗?

这很简单:

select max(id) as id, jobID, stageID
from yourtable
group by jobID, stageID
如果需要选择其他信息,请将其用作子选择:

select yourtable.id, yourtable.jobID, yourtable.stageID, yourtable.other
from (
    select max(id) as id
    from yourtable
    group by jobID, stageID
) max_job_stage_ids
join yourtable using (id)
或者在中使用
(我发现这对可视化查询计划没有多大帮助,但有些人更喜欢它):


什么是
选择版本()显示?显示5.7.12
select id, jobID, stageID, other
from yourtable
where id in (select max(id) from yourtable group by jobID, stageID)