最近遇到一个sql,要求表中时间最新的一条记录
假设表名为 test ,时间字段为sj,姓名为xm,可以用以下语句:
select * from test a where a.sj=(select max(b.sj) from test b where b.xm=a.xm)
之前一直不理解这个查询的处理流程,猜测是这样:
1.从a从取一条数据x
2.根据x.xm对b表分组,求b.xm为某个值时,b.sj的最大值。也就是这个人在表中对应的最大时间
3.用x.sj与max(b.sj)进行比较,如果相等,则返回x这条数据