2015-10-18 90 views
0

表:服务
显示最新的ID和公司ID

id companyid jobid 
1   1  1 
2   1  2 
3   1  2 
4   2  3 
5   3  4 
6   3  1 
7   4  2 
8   5  2 

我键入下面的查询:

SELECT * 
FROM service 
WHERE jobID = 2 
ORDER BY companyID desc, ID desc 

我也得到了以下的输出:

id companyid jobid 
8   5  2 
7   4  2 
3   1  2 
2   1  2 

但我希望我的预期产出如下:

id companyid jobid 
8   5  2 
7   4  2 
3   1  2 

如何修改查询以获得预期的输出?

+2

您是否想要基于该顺序的最新3行?如果是这样的话,你只需要在子句 –

回答

3

你应该能够只是应用max功能与group by条款沿:

select max(id) id, companyid, jobid 
from service 
where jobid = 2 
group by companyid, jobid 
order by id desc 

鉴于您的样本数据的结果将是:

id companyid jobid 
8 5   2 
7 4   2 
3 1   2 
+1

之后添加'LIMIT 3'即可,如果你不需要任何额外的列,那么这个源代码更可取。 –

2

这应该工作:

select * from service s1 
join (select max(id) as id 
     from service 
     group by jobid, companyid) s2 on s1.id = s2.id 
where s1.jobid = 2--can comment to select all latest jobs