1.需求背景
准备放下工作压力,站好国庆前的最后一班岗。以为今天就可以这样平(摸)淡(🐟)过完一天。结果,突然收到产品提的小需求,一个订单有多个审核人,需要展示最后一个审核人审核通过时间。
2.前期实现
SELECT
max( saar.id ) id ,saar.audit_time
FROM
star_apply_audit_record saar
INNER JOIN star_resource_apply_record srar ON saar.apply_record_id = srar.id
GROUP BY
srar.id
细心一看,就会发下,max函数查询只会查询max的字段,记录里的其他字段并不在同一条记录里。所以简单的采用max结合group by查询,是不行的。
3.调整后
SELECT
saar.apply_record_id id,
saar.audit_time
FROM
star_apply_audit_record saar
INNER JOIN (
SELECT
max( saar.id ) id
FROM
star_apply_audit_record saar
INNER JOIN star_resource_apply_record srar ON saar.apply_record_id = srar.id
GROUP BY
srar.id
) r ON saar.id = r.id
采用子查询方法。先把max函数查询出该条记录,作为虚拟表,再把主表连接虚拟表的方式,关联查询该条记录,这样你就可以查出你想要的任意字段了。