1. 程式人生 > >group by分組後獲得每組中時間最大的那條記錄

group by分組後獲得每組中時間最大的那條記錄

用途:

GROUP BY 語句用於 對一個或多個列對結果集進行分組。

例子:

原表:


現在,我們希望根據USER_ID 欄位進行分組,那麼,可使用 GROUP BY 語句。

我們使用下列 SQL 語句:

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 USER_ID, LAST_UPDATED_DATE DESC) b
    GROUP BY b.USER_ID;


其中:select * from t_iov_help_feedback  order by USER_ID, LAST_UPDATED_DATE DESC 就相當於一個按照USER_ID升序, 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;
---------------------
作者:zhang_wt
來源:CSDN
原文:https://blog.csdn.net/u012660464/article/details/78605078
版權宣告:本文為博主原創文章,轉載請