close
有時候在資料設計上會有 主檔 與 紀錄檔,來進行關聯與紀錄
但取得資料時,只想要取得最新一筆,( 或依照我們所要的排序條件取得最新或最舊 )
但又不想在程式上處理,希望直接用SQL取得 就可以運用 ROW_NUMBER() 與PARTITION BY
標準的紀錄Table會如下
這時候可以使用 ROW_NUMBER() 並且 以"時間"欄位排序,替資料編號
但這樣只會把所有資料都加上編號 並命名為sn 欄位,且全部依照時間從最新排序到最舊
如果不想要使用GROUP BY 跟MAX,那可以嘗試使用 PARTITION BY配合ROW_NUMBER() 來為資料做群組與編號
PARTITION BY '要群組的欄位名稱'
這時候就會依照我們要群組的欄位"訂單",針對同一群組進行編號
這樣就會依照不同訂單,進行重新編號
然後再對結果重新SELECT 並指定 sn值為 1 就可以取得 我們要的最新資料
要注意的是 ROW_NUMBER() 的編號是從1開始
全站熱搜
留言列表