mysql中使用group by后要获取某一列的最大值,我们可以直接使用MAX()函数来实现,但是如果我们想要获取最大值对应的ID,那么我们需要获取整个行数据。初始实现方法如下
t.,MAX(t.) 作为
来自TT
分组依据 ,t.,t.
执行上面的SQL语句确实可以得到每组中的最大值,但是经过检查发现最大值并不对应同一行数据。 如果我们要对其进行操作,结果肯定是错误的。
最后在网上找到了解决方法,如下
t.*
FROM ( * from `t` order by `` desc limit ) t
分组依据 ,t.,t.
从上面的SQL可以看出,我们首先将所有数据按照时间降序排序,然后进行分组。 那么每组中最上面的记录就是时间最长的记录。 检查执行结果后,确实可以实现需求。
注意:
必须添加限制。 如果不添加的话,数据不会先排序。 通过查看执行计划可以看到,在没有限制的情况下,少了一次操作。
t.*
FROM ( * from `t` order by `` desc limit ) t
分组依据 ,t.,t.
t.*
FROM ( * from `t` order by `` desc ) t
分组依据 ,t.,t.
—————————————————
版权声明:本文为CSDN博主“”原创文章,遵循CC 4.0 BY-SA版权协议。 转载时请附上原文出处链接及本声明。
原文链接: