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)