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
版權宣告:本文為博主原創文章,轉載請