1. 程式人生 > >parttion by ~~~針對某個欄位或多個欄位重複,資料只取前n條。問題例子:1.主評論下的評論按著 時間正序最多隻取前5條 2.獲取最新登入記錄......

parttion by ~~~針對某個欄位或多個欄位重複,資料只取前n條。問題例子:1.主評論下的評論按著 時間正序最多隻取前5條 2.獲取最新登入記錄......

分組目前已知partition by、group by

partition by用於給結果集分組分割槽,如果沒有指定那麼它把整個結果集作為一個分組,最後顯示具體資料

group by:通過所查詢的資料的某一欄位或屬性進行分組,最後顯示組資料,而不是具體資料,因為select 後面的所有列中,沒有使用聚合函式的列,必須出現在 group by 後面

根據例項這裡要用到的是partition by

1.主評論下的評論按著 時間正序最多隻取前5條 

  針對主評論parentid欄位,回評數量<=5

  rowindex=rownumber() over(partition by parentid order by Addtime asc)

  where rowindex<6

2.獲取最新登入記錄

  針對使用者loginuid,loginname登入,獲取最新的使用者登入記錄,則獲取最新的第一條

  rowtindex=ROW_NUMBER() over(partition by loginuid,loginname order by addtime des)

  where rowtindex=1