关于查询表中时间最新的一条记录

最近遇到一个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这条数据


猜你喜欢

转载自blog.csdn.net/sofeien/article/details/80278167