美文网首页
分组之后取一组最新时间数据

分组之后取一组最新时间数据

作者: 路人爱早茶 | 来源:发表于2020-05-12 20:14 被阅读0次

场景:

mysql中卡数据有两条,一条是旧的一条新的,现在需要拿到新的一条。

过程:

在select中使用max但是group by不使用同字段可以拿到一条数据,但max仅可以拿到最大字段值,select中其余字段不是max最大字段值所对应的别的字段。因此返出去的值除了max(updatetime)是错的

SELECT  * FROM c_card a RIGHT JOIN ( SELECT  a.cardNo maxCardNo, a.logid,   max(any_value(a.updateTime))maxUpdateTime FROM  c_card a    GROUP BY a.cardNo, a.peopleID ) b ON a.logid = b.logid 
此时logid不是max(updatetime)所匹配值

分析:

groupby再使用having ,max来获取最大时间带不下来(having 条件需要是一个固定值,否则就会类似left join来遍历同一张表以选出符合条件值)

结果:

拿到时间再和相关字段匹配减少失败概率

SELECT  * FROM c_card a RIGHT JOIN ( SELECT  a.cardNo maxCardNo,    max(any_value(a.updateTime))maxUpdateTime FROM  c_card a    GROUP BY a.cardNo, a.peopleID ) b ON a.updateTime = b.maxUpdateTime and a.cardNo=b.maxCardNo

相关文章

网友评论

      本文标题:分组之后取一组最新时间数据

      本文链接:https://www.haomeiwen.com/subject/flmynhtx.html