sql 多組條資料取最新的一條資料

只爭朝夕^ω^)↗發表於2018-08-28

資料如下圖 ,id1即user_id 欄位有多組資料,我們只需要每個 user_id 的最新一條資料
這裡寫圖片描述
方式:ROW_NUMBER() OVER
具體是 使用 – ROW_NUMBER() OVER ( PARTITION BY tlt.user_id order by tlt.handle_time desc) rowNum 來區分,從而獲取最新資料

具體實現

SELECT * FROM (
SELECT tlt.longitude, tlt.latitude,u.*,ROW_NUMBER() OVER ( PARTITION BY tlt.user_id order by tlt.handle_time desc) rowNum 
 from t_location tlt LEFT JOIN t_user u on tlt.user_id = u.id
where u.org_id in (64 ,67) ) as temp 
where TEMP.rowNum = 1 

這裡寫圖片描述

親測可用,不用感覺很麻煩,但是這個好像解決這個問題較為有效的方式,其實將各部分替換一下就好了。partition by 後面就是根據什麼分組,order by後面是根據什麼來排序,可以增加多個,直接and後面加條件就行了。注意別忘了rowNum,這個是表的名字,注意最後的where TEMP.rowNum=1別忘了。

引自https://blog.csdn.net/phn555/article/details/76033187?locationNum=10&fps=1

相關文章