今天說一下Top

2021-07-11 15:06:02 字數 1374 閱讀 2122

top這個關鍵字,大家都不陌生~尤其是很多時候開啟ssms的時候右鍵表名,選擇前1000行的時候,就可以見到編譯出來的語句 select top 1000 *** from ***

好~我們先看看top 的語法

[ 

top (expression) [percent]

[ with ties ]

]top 關鍵字支援實際行數 top 50 查詢前50行,使用這種模式的話,top 後面必須跟乙個整數(傳入浮點是會報錯的)

或者使用 top 10 percent 查詢前10%的資料,使用這種方法的話,top 後面可以跟乙個浮點,但是會向上取整。

with ties 的選項則表示是否將與最後一行排序一樣的行顯示出來。使用這個選項將有可能得出超出 top 關鍵字之後所寫入的數量。

對於select 這個是控制返回多少行資料,而對於insert ,update ,delete,merge的話,則是控制要操作多少行的資料。

官方文件說建議使用top的時候始終配合order by來使用。我的理解是這樣紙的。

有乙個語句

select top 5 aa,bb,cc

from tablea

這種top 是隨機排序的,隨機的依據取決於當時的查詢計畫是怎麼執行,如果沒有使用order by的話,有可能當資料量有所變化,那就會出現不同的結果。

所以如果需要乙個穩定的結果,那麼建議如果使用top關鍵字,那麼後面就配套乙個order by 結果才穩定

select :

select top (50) * from table --裡面的50可以是支援使用變數來傳值

insert

insert 的用法主要使用

insert top (5) into table (***) values (***) --這裡面的順序與values 後面跟的順序一致

如果用insert select 的時候,則與select 的top 用法一致

update /delete /merge :

update/delete top (50)

如果使用此方式,那麼將會是隨機更新/刪除,也有可能引起預想不到的結果。然而update/delete 卻是不支援order by的。

如果需要穩定的排序,可以採取子查詢先把需要更新/刪除的結果集查詢出來。

update a set xx=aa

from (select top 5 * from table order by bbb) a

可以考慮這種處理方法。

ps:另外我覺得top 這個關鍵字有乙個比較好的應用場景,就是當需要一次性處理大量資料的時候,可以借助top關鍵字來分批處理。避免因為一次處理過量的資料引起大量的事務日誌。也比較安全

今天說一下Order by 這個常規東西

order by 在我們日常的資料庫開發生活中是出鏡率灰常高的。order by 的作用就是用於對查詢出來的結果進行排序 對啊 人家就是這麼接地氣 比如按發生時間啊,首字母啊之類的都是相當常見。今天主要分享一下order by 的用法和樣例。常規用法 這個是最簡單的 然後如果我們想奇數優先,偶數殿後...

ei指什麼 今天說一下EI是什麼

昨天普及了一下sci,今天跟大家說一下ei ei 工程索引 ei 工程索引 the engineering index,簡稱ei 創刊於1884年,是美國工程資訊公司出版的著名工程技術類綜合性檢索工具。ei每月出版1期,文摘1.3萬至1.4萬條 每期附有主題索引與作者索引 每年還另外出版年卷本和年度...

今天決定介紹一下et mvc

從今天開始決定陸續寫寫et mvc的一些事情,用過了struts,spring mvc,ror等框架後,覺得自已也可以寫寫框架,於是,經過一段時間的編寫,在一些專案上使用後收到很好的效果,覺得可以介紹給大家了。對它命名et mvc是因為et是公司名稱的縮寫,所以沒想到更好名稱之前就暫時叫這個名字了。...