SEO 網站設計,系統規劃
分享專案管理心得
主要提供軟體、網站、、APP系統規劃服務,廣告文案、提供行銷建議。

Adolph

Follow Us:

Blog

料理,程式設計,專案管理,photo 1555099962 4199c345e5dd

SQL多筆重複資料,取得SQL最新一筆資料,使用 ROW_NUMBER() 與PARTITION BY

取得SQL最新一筆資料 ::

有時候在資料設計上會有 主檔 與 紀錄檔,來進行關聯與紀錄
但取得資料時,只想要用SQL語法取得最新一筆,( 或依照我們所要的排序條件取得最新或最舊 )
但又不想在程式上處理,希望直接用SQL語法來取得SQL最新一筆資料,
就可以運用 ROW_NUMBER() 與PARTITION BY

標準的紀錄Table會如下
取得SQL最新一筆資料,開瓶程式碼
這時候可以使用 ROW_NUMBER()  並且 以”時間”欄位排序,替資料編號
取得SQL最新一筆資料,開瓶程式碼
但這樣只會把所有資料都加上編號 並命名為sn 欄位,且全部依照時間從最新排序到最舊

如果不想要使用GROUP BY 跟MAX,那可以嘗試使用 PARTITION BY配合ROW_NUMBER()  來為資料做群組與編號
PARTITION BY ‘要群組的欄位名稱’
這時候就會依照我們要群組的欄位”訂單”,針對同一群組進行編號
這樣就會依照不同訂單,進行重新編號
取得SQL最新一筆資料,開瓶程式碼
然後再對結果重新SELECT 並指定 sn值為 1 就可以取得 我們要的最新資料
要注意的是 ROW_NUMBER() 的編號是從1開始

取得SQL最新一筆資料,開瓶程式碼