Mysql-随心所欲查询(一)

139 阅读1分钟

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函数查询出该条记录,作为虚拟表,再把主表连接虚拟表的方式,关联查询该条记录,这样你就可以查出你想要的任意字段了。