Mysql查询某个时间段之间,每天中最新的一条记录

  1. 有一张表,该表存储着会员积分的变动情况,每次消费或充值后当时的积分情况。次数我们有一个需求,需要统计某段时间内,每天结束前会员的积分曲线表。


     
  2. 分组查询
    我们的需求是统计每天最后一次的变动记录,而不仅仅是变动时间,所以这里仅仅使MAXGROUP BY是没有办法达到我们的需求的。
    这个时候,我们就可以使用GROUP_CONCAT和GROUP BY。
     
  3. GROUP_CONCAT
    作用:将GROUP产生的同一个分组中的值连接起来,返回一个字符串。
    语法:GROUP_CONCAT( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
    此时,使用GROUP_CONCAT就可以根据变动时间得到每天积分变动一个字符串


    此时,我们得到是每天积分的合并字符串,这个字符串中的积分是按照变动时间降序排序的。因此我们只需要获取第一个逗号钱的积分,就是每天最后一次发生积分变动时的积分
     
  4.  SUBSTRING_INDEX
    作用:根据特定的分隔符和下标截取字符串
    语法:SUBSTRING_INDEX(“字符串”,“分隔符“,分隔符下标)
    注意:这里是分隔符的下标,而不是分隔符在字符串中的下标

  5. 总结
    虽然发方法可能有点繁琐,但是比自关联效率应该快很多。

猜你喜欢

转载自blog.csdn.net/u011482647/article/details/120777611