zoukankan      html  css  js  c++  java
  • group by分组后获得每组中时间最大的那条记录

    用途:
    GROUP BY 语句用于 对一个或多个列对结果集进行分组。

    原表: t_iov_help_feedback

    现在,我们希望根据USER_ID 字段进行分组,那么,可使用 GROUP BY 语句。

    SELECT
      ID,
      USER_ID,
      problems,
      last_updated_date
    FROM
      t_iov_help_feedback
    GROUP BY
      USER_ID;

    
    

     结果:

    可以看到上面的,结果的确是根据 USER_ID 进行分组了,但是返回的记录是 USER_ID 对应的每组 中最小的那条记录。也就是ID最小的那条。现在我想分组后得到,last_updated_date 最大的那条记录。这怎么实现呢?

    很简单,直接查询的表默认是以 ID 进行顺序排序的,因为分组的时候取的是每组中的第一条。所以只需要 使查询的表 按照 last_updated_date倒叙排序就行了。

    实现的SQL如下,这里使用了嵌套查询。

    SELECT
      ID,
      USER_ID,
      problems,
      last_updated_date
    FROM
      ( SELECT * FROM t_iov_help_feedback ORDER BY LAST_UPDATED_DATE DESC ) b
    GROUP BY
      b.USER_ID;

    其中:select * from t_iov_help_feedback  order by  LAST_UPDATED_DATE DESC 就相当于一个按照 last_updated_date

    倒叙排序的表了。现在取的就是每组中时间最大的那条记录了。

    当遇到两个不同的表时,可以使用以下SQL:

    SELECT
      a.title,
      t.NAME,
      t.price
    FROM
      a
      INNER JOIN ( SELECT * FROM b ORDER BY id, price ) t ON t.id = a.b_id
    GROUP BY
      a.b_id;

    注:mysql5.7的版本 需要在order by 后面加上limit限制

    转载:https://blog.csdn.net/u012660464/article/details/78605078

  • 相关阅读:
    关于mvc、webapi中get、post、put、delete的参数
    sql2008清空日志
    Entityframework修改某个字段
    order by与索引
    Ninject中如果在抽象类中使用了属性注入,则属性必须设置为protected或public
    ViewData,ViewBag,TempData
    eurake高可用集群搭建 自我保护机制
    zookeeper 保证 CP

    JConsole工具监控java程序内存和JVM
  • 原文地址:https://www.cnblogs.com/CincentHuang/p/12376236.html
Copyright © 2011-2022 走看看