問題點:分類統計時候,我們可能經常會碰到這樣的需求,每個分類按照一定順序,取幾條資料,然後在一起顯示。
這個問題的解決方法,我們通過搜尋引擎,可以找到很多中。但是不是sql語句過於複雜,就是在資料量比較大時候,效能特別成問題。
問題詳細描述如下:
比如,假設我們有下面這樣結構的一張表,這張表的資料量非常巨大。
createclass 表示分類編號。 分類數不固定, 至少有上千種分類table
table1
([id] [bigint] identity(1,1) not
null,
[name] [nvarchar](128) not
null,
[class] int
notnull,
[date] datetime
notnull
)
date 表示該條記錄被更新的時間
我們現在想獲得每個分類最新被更新的5條記錄。
解決方案:
select id,name,class,date解決方案簡單說明:from(select id,name,class,date ,row_number() over(partition by class order
bydate
desc)as rowindex from
table1) a where rowindex <= 5
這個解決方案的關鍵就是使用了sql 2005 的 row_number 這個全新的函式。
row_number ( ) 函式的語法如下:
row_number ( ) over ( [ ] )
over 子句中的 partition by 將結果集分為多個分割槽。
over 子句中的 order by 將對 row_number 進行排序。
每個分類取最新的幾條的SQL實現
分類統計時候,我們可能經常會碰到這樣的需求,每個分類按照一定順序,取幾條資料,然後在一起顯示。這個問題的解決方法,我們通過搜尋引擎,可以找到很多中。但是不是sql語句過於複雜,就是在資料量比較大時候,效能特別成問題。今天我就碰到這樣乙個需求。而我自己的解決方案就是sql過於複雜,或者效能比較差的。為...
每個分類取最新的幾條的SQL實現
分類統計時候,我們可能經常會碰到這樣的需求,每個分類按照一定順序,取幾條資料,然後在一起顯示。這個問題的解決方法,我們通過搜尋引擎,可以找到很多中。但是不是sql語句過於複雜,就是在資料量比較大時候,效能特別成問題。今天我就碰到這樣乙個需求。而我自己的解決方案就是sql過於複雜,或者效能比較差的。為...
每個分類取最新的幾條的SQL實現
分類統計時候,我們可能經常會碰到這樣的需求,每個分類按照一定順序,取幾條資料,然後在一起顯示。這個問題的解決方法,我們通過搜尋引擎,可以找到很多中。但是不是sql語句過於複雜,就是在資料量比較大時候,效能特別成問題。今天我就碰到這樣乙個需求。而我自己的解決方案就是sql過於複雜,或者效能比較差的。為...