zoukankan      html  css  js  c++  java
  • 查询每个分组中第N的一条记录

    查询每个分组中第N的一条记录

    -- 天气表,每天每个地区采集了多条记录的天气信息,但是时间只记录到了天,导致同一个地区同一天出现了多条天气记录
    -- 目的:获取所有地区在每天中第N的一条记录
    select * from data_weather where `id` in
    (
        select  t1.`id`
        from 
            data_weather t1 left join 
            data_weather t2 on t1.addtime=t2.addtime and t1.areaId=t2.areaId and t1.`id`<=t2.`id`
        group by t1.`id`,t1.areaId,t1.addtime
        having count(t1.`id`)=5
    )

    思路:将表中每个分组内的记录和自己组内的所有记录进行对比,比较条件为表的id号(或其他唯一约束字段),按照比较条件筛选后每个组内的记录会增多,假设源表某个组内有m条记录,

    则比较后的记录条数为 1+2+...+m条记录,然后再分组统计,如:count(`id`)=1表示分组内最新的一条记录,count(`id`)=2表示分组内倒数第2条记录。

    通过上述方式就可查询分组内第N条记录。

  • 相关阅读:
    centos7安装pycharm
    centos7 mysql数据库安装
    删除MySQL服务
    计组第三章预习
    攻防世界web新手练习区
    原码补码预习
    第一次总结
    第三章预习
    数据结构十进制数表示
    预习原码补码
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/6138113.html
Copyright © 2011-2022 走看看