欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

實習筆記-2:sql 分組不一定要group by

系統 1970 0

?

今天在公司寫代碼的時候,遇到一個sql語句構建問題。

情形是這樣的:

我需要獲取不同小組下前N條記錄。

select top 10 * from dbo.Topic where GroupID in (60034,60037) and State=0? order by CrtTime desc

很明顯,這是錯的,不僅沒group by,獲取出來的還是按兩個小組的創建時間的前10條數據。

可是,用group by的話,它有個很不通人性的特性。即是——凡是在group by后面出現的字段,必須同時在select后面出現;凡是在select后面出現的、同時未在 聚合函數 中出現的字段,必須同時出現在group by后面。

這樣就讓我不得不放棄使用group by來分組查詢。

后來在網上找到,分組,不一定要用group by來實現。用row_number() over()同樣可以實現。

語法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

簡單的說row_number()從1開始,為每一條分組記錄返回一個數字,這里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再為降序以后的沒條xlh記錄返回一個序號。

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根據COL1分組,在分組內部根據 COL2排序,而此函數計算的值就表示每組內部排序后的順序編號(組內連續的唯一的)

有了這么一個函數存在,最終我構建了我的sql語句:

select *
from
(
select *,row_number() over (partition by GroupID order by CrtTime desc) rank from Topic where State=0
) T
where T.rank<=10 and T.GroupID in(60034,60040)

實現了這么一個功能:從不同的組別(60034,60040)里獲取到了按創建時間降序排序的各個小組里的前10條記錄。

參考文章: sql查詢-分組

SQL ROW_NUMBER() OVER函數的基本用法用法

?

?

實習筆記-2:sql 分組不一定要group by


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品国产亚洲精品不卡 | 国产精品一区二区三区在线播放 | 中国欧美日韩一区二区三区 | 日日干日日插 | 国产高清在线观看av | 久久韩剧网 | 欧美日韩精品一区二区 | 欧亚乱熟女一区二区在线 | 久久久久国产一区二区三区 | 中文天堂网 | 日本不卡高清免费 | 午夜小网站 | 精品久久亚洲 | 婷婷色在线视频 | av成人免费在线观看 | 欧美日韩亚洲国内综合网俺 | 亚洲爽 | 男女啪啪免费视频 | 久久久久成人网 | 九九热免费视频在线观看 | 国产精品久久久久久亚洲调教 | 欧美综合久久 | 色婷婷色综合缴情在线 | 亚洲欧洲日产国码在线观看 | 97婷婷狠狠成人免费视频 | 国产不卡免费 | 欧美在线播放一区 | 国产免费久久 | 亚洲自拍偷拍色图 | 亚洲美女天堂网 | 免费很黄很色裸乳在线观看 | 亚洲综合久久久久久中文字幕 | 欧美综合国产精品久久丁香 | 伊人久久国产精品 | 91婷婷韩国欧美一区二区 | 国内精品视频 | 欧美日本免费 | 日韩精品hd | 久久综合日韩亚洲精品色 | 国产一级视频 | 91精品久久久久久综合五月天 |