SQL中Top與Order結合使用的問題VBA實例教程_第1頁
SQL中Top與Order結合使用的問題VBA實例教程_第2頁
SQL中Top與Order結合使用的問題VBA實例教程_第3頁
SQL中Top與Order結合使用的問題VBA實例教程_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

SQL中Top與Order聯合使用的問題VBA實例教程除非注明,文章均為戰(zhàn)戰(zhàn)如瘋原創(chuàng),轉載請保留鏈接:,VBA交流群273624828。在以前關于SQL的知識中我們講過要提早記錄的前n條的話可以用Top命令,假如要對提拿出來的數據進行排序可以用Orderby,那么假如我們要從一批數據里面提拿出前n大的數據自然就想到了先用Orderby對數據進行排序,而后再從排好的數據中拿出前n條就可以了。那下邊我們來看個例子,有以下一個表此刻我們要從中拿出前3名,明顯這里有4個99,那我們只需取任意3個99就可以了,看我下邊寫的代碼Subsearch( )DimcnnAsObject,sql$,rsAsObject,i,nRange("E1").CurrentRegion.Offset(1,0).ClearContentsSetcnn=CreateObject("adodb.connection")cnn.Open"Provider=Microsoft.ACE.OLEDB.12.0;ExtendedProperties=excel12.0;DataSource="&ThisWorkbook.FullNamesql="selecttop3姓名,數學from[Sheet1$A1:B11]orderby數學desc"Setrs=cnn.Execute(sql)Sheet1.[E2].CopyFromRecordsetrscnn.CloseSetrs=NothingSetcnn=NothingEndSub上邊的代碼看上去沒有什么問題,運轉一下結果以下結果是4個,不是我們所料想的3個,明顯我們的SQL語句與我們理解的有差異。之因此會出現這樣的問題是由于我們將Top與Order結適用了,當二者結適用的時候Topn就不是指前n條了,而成了前n名了。那這個名次怎么排的呢?很簡單,原表中4個99分的排名都是1,5個1分的排名都是5,沒有2、3、4名,最低分0的排名是10,沒有6、7、8、9名。因此假如你取top1、top2、top3也許top4獲得的都是4個排名1的數據,假如你取top5、top6、top7、top8或top9那獲得的就是排名1和排名5的一共9個數據。比方top9取前9名那就是第1名4個,2、3、4名0個,第5名5個,6、7、8、9名0個,加起來是9個了。那假如我就是想取前n個數據而不是前n名,那怎么辦?很簡單,看下邊的代碼Subsearch( )DimcnnAsObject,sql$,rsAsObject,i,nRange("E1").CurrentRegion.Offset(1,0).ClearContentsSetcnn=CreateObject("adodb.connection")cnn.Open"Provider=Microsoft.ACE.OLEDB.12.0;ExtendedProperties=excel12.0;DataSource="&ThisWorkbook.FullNamesql="select姓名,數學from[Sheet1$A1:B11]orderbydesc"sql="selecttop3*from("&sql&")"Setrs=cnn.Execute(sql)Sheet1.[E2].CopyFromRecordsetrscnn.CloseSetrs=NothingSetcnn=NothingEndSub

數學上邊的代碼運轉一下獲得的結果就是

3個數據,這個

sql

語句包含了兩部分,先用"select姓名,數學from[Sheet1$A1:B11]orderby數學desc"形成一個降序擺列的查詢,而后我們再從這個盤問中取top3,因此這里top語句的結構就成了“selecttop*from[table]”,也就沒有了orderby的問題了,因此最后我結果就是實實在在的前3行數據。本節(jié)示例文件下載:。您可能也喜愛:SQL之刪除數據SQL語句應用基礎SQL基礎-where條件設定SQL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論