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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM