排序的函數sql
❶ sql lag() over()函數用法什麼用
lag表示 分組排序後 ,組內後面一條記錄減前面一條記錄的差,第一條可返回 NULL ;lag(arg1,arg2,arg3):
arg1是從其他行返回的表達式
arg2是希望檢索的當前行分區的偏移量。是一個正的偏移量,時一個往回檢索以前的行的數目。
arg3是在arg2表示的數目超出了分組的范圍時返回的值。
sql over的作用及用法
RANK ( ) OVER ( [query_partition_clause] order_by_clause )
DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )
可實現按指定的欄位分組排序,對於相同分組欄位的結果集進行排序,
其中PARTITION BY 為分組欄位,ORDER BY 指定排序欄位
over不能單獨使用,要和分析函數:rank(),dense_rank(),row_number()等一起使用。
其參數:over(partition by columnname1 order by columnname2)
含義:按columname1指定的欄位進行分組排序,或者說按欄位columnname1的值進行分組排序。
例如:employees表中,有兩個部門的記錄:department_id =10和20
select department_id,rank() over(partition by department_id order by salary) from employees就是指在部門10中進行薪水的排名,在部門20中進行薪水排名。如果是partition by org_id,則是在整個公司內進行排名。
❷ sql中order by和group by的區別
1、意思不一樣。
order by 是指從英文里理解就是行的排序方式,默認的為升序。後面必須列出排序的欄位名,可以是多個欄位名。
group by 是指從英文里理解就是分組。必須有「聚合函數」來配合才能使用,使用時至少需要一個分組標志欄位。
2、適用范圍不同:order by 用於排序,一般與asc升序或desc降序一起使用。例如select * from 表A order by 列a。
group by 用於分類匯總,一般與聚合函數(比如avg平均、sum合計、max最大、min最小、count計算行)一起使用。例如select 月份,sum(工資)as 總工資 from 工資表 group by 月份。
3、定義不同:order by主要側重許多數據的排序,例如按照大小順序對數據進行排列,group by主要側重許多數據的分組,例如按照性別、年齡、國家、學科等進行分組。
4、使用的函數不一樣。
order by子句中的列必須包含在聚合函數或 GROUP BY 子句中。
group by 子句中可使用的函數AVG() 、MIN() 、 MAX() 、SUM() 、COUNT() 。
5、order by從英文里理解就是行的排序方式,默認的為升序。order by後面必須列出排序的欄位名,可以是多個欄位名。
group by從英文里理解就是分組。必須有「聚合函數」來配合才能使用,使用時至少需要一個分組標志欄位。
(2)排序的函數sql擴展閱讀
Microsoft Jet資料庫引擎SQL 數據類型 由13個基本數據類型組成,它們是由 Microsoft Jet 資料庫引擎和幾個驗證過的有效同義字定義的。常見的有:整形,單精度,雙精度,可變長度字元,固定長度字元,長型,日期等等。
可以用ALTER TABLE 語句修正基數和增量。剛插進表中的行會有自動為基於新種值和增量值的列生成的值。如果新種和增長的值和以前的種值及增量匹配,就會造成復制。如果這個列是主鍵,復制值生成時可能導致錯誤。
定義成TEXT也稱作MEMO)或CHAR(也稱作有具體長度的 TEXT(n))的欄位中的字元被儲存在 Unicode 表示格式。
Unicode字元一律需要兩個位元組存儲每一字元。對於現有的主要包含字元數據的 Microsoft Jet資料庫,這可能意味著資料庫文件被轉換成 Microsoft Jet 4.0格式時字長會增加將近一倍。
然而,從前由單位元組字元群(SBCS)指示的眾多字元群的Unicode 表示可以很容易地被壓縮成一個單位元組。有關的詳細信息,參見CREATE TABLE。如果用COMPRESSION屬性定義CHAR列,數據存儲時會自動被壓縮,提取時解壓縮。
❸ sql的order by可以自定義排序函數嗎
可以的。order by 後面跟著的欄位名,而且現在的瓶頸基本是在sql上,所以盡量不要在sql里執行計算函數之類。因為運算和執行函數會消耗資源,使得sql執行變慢。函數之類的能在程序里執行盡量在程序里執行,現在cpu的瓶頸還很遠。
❹ SQL寫一個給數字排序的函數,比如輸入12,56,32要輸出12,32,56. 入參不確定 可以是任意多個數
use master
go
if object_id('OrderStr')<>0 drop function OrderStr
go
create function OrderStr(@oristr varchar(256), @delimiter char,@Num int)
returns varchar(256)
as
BEGIN
DECLARE @re varchar(256) --返回值
DECLARE @ch varchar(250) --一次掃描所存放最小的字元
declare @str varchar(255)
DECLARE @j int,@k int --游標
declare @m int
set @j=0
set @re=''
--對於不含,的字元串不排序直接返回
if charindex(@delimiter,@oristr,1)=0
begin
set @re=@oristr
return @re
end
while len(@oristr)>0 --外層循環
BEGIN
set @m=charindex(@delimiter,@oristr,1)
if(@m=0 and @re is not null)
begin
set @re=isnull(@re ,'')+@delimiter+ @oristr --把ch追加給re
return @re
end
SET @ch=SUBSTRING(@oristr,1,@m-1)
set @j=1
while(@j<=len(@oristr) and charindex(@delimiter,@oristr,@j)>0) --內層循環
BEGIN
set @m=charindex(@delimiter,@oristr,@j)
if @m>0
begin
set @str=SUBSTRING(@oristr,@m+1,(case when charindex(@delimiter,@oristr,@m+1)>0 then charindex(@delimiter,@oristr,@m+1)-@m-1 else len(@oristr) end))
set @j=@m+1
end
else
begin
set @str=substring(@oristr,@j,len(@oristr))
set @j=len(@oristr)
end
if @Num = 0
if convert(int ,@str)< convert(int ,@ch)--如果OriStr[j]值比ch小,則把OriStr[j]賦值給ch
SET @ch=@str
else
SET @str=@ch
else
if @str<@ch
SET @ch=@str
else
SET @str=@ch
set @k=charindex(@ch,@oristr)
END
if @re=''
begin
set @re=@ch --把ch追加給re
end
else
begin
set @re=isnull(@re ,'')+@delimiter+ @ch --把ch追加給re
end
if (@k>0 )
begin
set @oristr=stuff(@oristr,charindex(@ch,@oristr),(case when charindex(@delimiter,@oristr,@k)>0 then charindex(@delimiter,@oristr,@k)+1-@k else len(@oristr)+1-@k end),'')
end
else
begin
set @re=isnull(@re,'') + left(@oristr,len(@oristr)-1)
set @oristr=''
end
if right(rtrim(@oristr),1)=@delimiter
begin
set @oristr=stuff(@oristr,len(@oristr),1,'')
end
END
return @re
end
go
select dbo.OrderStr('g,b,e,d,a,s',',',1)
select dbo.OrderStr('11,32,123,244,34',',',0)
既解決了數字的又解決了字元串的排序
❺ sql里的ROW_NUMBER() OVER是啥意思
ROW_NUMBER() OVER是oracle資料庫的分析函數,會在數據表生成一個排序列。
語法:ROW_NUMBER ( ) OVER( [ PARTITION BY value_expression , ... [ n ] ]order_by_clause )
參數:PARTITION BYvalue_expression 將 FROM 子句生成的結果集劃入應用了 ROW_NUMBER 函數的分區。value_expression 指定對結果集進行分區所依據的列。如果未指定 PARTITION BY,則此函數將查詢結果集的 所有行視為單個組。
order_by_clause ORDER BY 子句可確定在特定分區中為行分配唯一 ROW_NUMBER 的順序。
(5)排序的函數sql擴展閱讀
分析函數與聚合函數計算方式一樣,分析函數也是對行集組進行聚合計算,但是它不像普通聚合仗函數那樣每組只返回一個值,分析函數可以為每組返回多個值。
分析函數的語法為:over(partition by排 列名1 order by 列名2 ),括弧中的兩個關鍵詞partition by 和order by 可以只出現一個。over() 前面是一個函數,如果是聚合函數,那麼order by 不能一起使用。
ROW_NUMBER、DENSE_RANK、RANK屬於排名函數。
排名分析函數可以單獨使用ORDER BY 語句,也可以和PARTITION BY同時使用。
PARTITION BY用於將結果集進行分組。
ORDER BY 指定排名分析函數的順序,在排名分析函數中必須使用ORDER BY語句。
ROW_NUMBER 為每一組的行按順序生成一個連續序號。
RANK()也為每一組的行生成一個序號,與ROW_NUMBER()不同的是如果按照ORDER BY的排序,如果有相同的值會生成相同的序號,並且接下來的序號是不連序的。例如兩個相同的行生成序號3,那麼接下來會生成序號5。
❻ SQL榪涜屾帓搴忋佸垎緇勩佺粺璁$殑10涓鏂版妧宸
浠ヤ竴縐嶆湁鎰忎箟鐨勬柟寮忕粍緇囨暟鎹鍙鑳芥槸涓欏規寫鎴樸傛湁鏃朵綘闇瑕佺殑鍙鑳芥槸涓涓綆鍗曠殑鎺掑簭錛屼絾鏄閫氬父浣犻渶瑕佸仛鏇村氾紝浣犻渶瑕佸垎緇勬潵榪涜屽垎鏋愬拰緇熻°傚垢榪愮殑鏄錛孲QL鎻愪緵浜嗗ぇ閲忚鍙ュ拰鎿嶄綔鏉ヨ繘琛屾帓搴忥紝鍒嗙粍鍜屾憳瑕併備笅闈㈢殑涓浜涙妧宸у皢浼氬府鍔╀綘璇嗗埆浠涔堟椂鍊欐帓搴忥紝浠涔堟椂鍊欏垎緇勶紝浠涔堟椂鍊欎互鍙婂備綍緇熻°傚硅佹瘡鏉¤鍙ュ拰鎿嶄綔鐨勮︾粏淇℃伅璇鋒煡鐪婤ooks Online銆
銆銆1.浣跨敤鎺掑簭浣挎暟鎹鏈夊簭
銆銆閫氬父錛屼綘鐨勬墍鏈夋暟鎹鐪熸i渶瑕佺殑浠呬粎鏄鎸夋煇縐嶉『搴忔帓鍒椼係QL鐨凮RDER BY璇鍙ュ彲浠ヤ互瀛楁瘝鎴栨暟瀛楅『搴忕粍緇囨暟鎹銆傚洜姝わ紝鐩鎬技鐨勫兼寜緇勬帓搴忓湪涓璧楓傜劧鑰岋紝榪欎釜鍒嗙粍鏃舵帓搴忕殑緇撴灉錛屽苟涓嶆槸鐪熺殑鍒嗙粍銆侽RDER BY鏄劇ず姣忔潯璁板綍鑰屽垎緇勫彲鑳戒唬琛ㄥ緢澶氳板綍銆
銆銆2.榪涜屽垎緇勯櫎鍘婚噸澶嶅
銆銆鎺掑簭鍜屽垎緇勪箣闂寸殑鍖哄埆鏄錛氭帓搴忕殑鏁版嵁鏄劇ず鎵鏈夎板綍錛堝湪闄愬畾鏍囧噯鑼冨洿涔嬪唴錛夛紝鑰屽垎緇勬暟鎹涓嶆槸鏄劇ず鎵鏈夎板綍銆侴ROUP BY璇鍙ュ逛簬鍚屾牱鐨勫煎彧鏄劇ず涓鏉¤板綍銆備緥濡傦紝涓嬮潰鐨勮鍙ヤ腑鐨凣ROUP BY璇鍙ュ規暟鎹婧愪腑閲嶅嶅嚭鐜扮殑鏁版嵁鍙榪斿洖鐨剒ip緙栫爜鍒椼
銆銆SELECT ZIP FROM Customers GROUP BY ZIP
銆銆鍙鍖呮嫭鐢盙ROUP BY鍜孲ELECT璇鍙ュ叡鍚屽畾涔夌殑閭d簺璁板綍錛屾崲鍙ヨ瘽璇達紝SELECT鍒楄〃蹇呴』婊¤凍GROUP BY鍒楄〃錛屼絾鏄鏈変竴涓渚嬪栧氨鏄瘲ELECT鍒楄〃鍙浠ュ寘鍚鑱氬悎鍑芥暟錛圙ROUP BY璇鍙ヤ笉鍏佽鎬嬌鐢ㄨ仛鍚堝嚱鏁幫級銆傞渶瑕佹敞鎰忕殑鏄疓ROUP BY璇鍙ヤ笉浼氬圭粨鏋滃垎緇勮繘琛屾帓搴忋備負浜嗕嬌鍒嗙粍鎸夊瓧姣嶆垨鏁板瓧鏈夊簭鎺掑垪錛岄渶瑕佹坊鍔燨RDER BY璇鍙ャ傛ゅ栵紝鍦℅ROUP BY璇鍙ヤ腑涓嶈兘寮曠敤浣跨敤浜嗗埆鍚嶇殑瀛楁點傚垎緇勬爮鐩蹇呴』鏄娼滃湪鐨勬暟鎹錛屼絾瀹冧滑騫朵笉闇瑕佹樉紺哄湪緇撴灉涓銆
銆銆3.鍦ㄥ垎緇勪箣鍓嶈繘琛屾暟鎹絳涢
銆銆浣犲彲浠ユ坊鍔犱竴涓猈HERE璇鍙ユ潵絳涢夋湁GROUP BY鎵寰楀垎緇勪腑鐨勬暟鎹銆備緥濡傦紝涓嬮潰鐨勮鍙ュ彧榪斿洖鑲濉斿熀宸為【瀹㈢殑ZIP緙栫爜鍒椼
銆銆SELECT ZIP FROM CustomersWHEREState = 鈥橩Y鈥 GROUP BY ZIP
銆銆蹇呴』娉ㄦ剰鐨勬槸WHERE璇鍙ユ槸鍦℅ROUP BY璇鍙ユ眰鍊間箣鍓嶈繘琛屾暟鎹榪囨護鐨勩備笌GROUP BY璇鍙ヤ竴鏍鳳紝WHERE璇鍙ヤ篃涓嶆敮鎸佽仛鍚堝嚱鏁般
銆銆4.榪斿洖鎵鏈夊垎緇
銆銆褰撲綘浣跨敤WHERE璇鍙ヨ繃婊ゆ暟鎹鏃訛紝緇撴灉鍒嗙粍涓鍙鏄劇ず浣犳寚瀹氱殑閭d簺璁板綍錛岃岀﹀悎鍒嗙粍瀹氫箟浣嗘槸涓嶆弧瓚寵繃婊ゆ潯浠剁殑鏁版嵁涓嶄細鍖呭惈鍦ㄦ煇涓鍒嗙粍涓銆傚綋浣犳兂鍦ㄥ垎緇勪腑鍖呭惈鎵鏈夋暟鎹鏃舵坊鍔犲叧閿瀛桝LL鍗沖彲錛岃繖鏃禬HERE鏉′歡灝變笉璧蜂綔鐢ㄣ備緥濡傦紝鍦ㄥ墠闈㈢殑渚嬪瓙涓娣誨姞鍏抽敭瀛桝LL灝變細榪斿洖鎵鏈夌殑ZIP鍒嗙粍錛岃屼笉鏄浠呭湪鑲濉斿熀宸炵殑閭d簺銆
銆銆SELECT ZIP FROM CustomersWHEREState = 鈥橩Y鈥 GROUP BY ALL ZIP
銆銆榪欐牱鐪嬫潵錛岃繖涓や釜璇鍙ュ瓨鍦ㄥ啿紿侊紝浣犲彲鑳戒笉浼氫互榪欑嶆柟寮忎嬌鐢ㄥ叧閿瀛桝LL銆傚綋浣犱嬌鐢ㄨ仛鍚堝嚱鏁拌$畻鏌愪竴鍒楁椂錛屼嬌鐢ˋLL鍏抽敭瀛楀彲鑳戒細寰堟柟渚褲備緥濡傦紝涓嬮潰鐨勮鍙ヨ$畻姣忎釜鑲濉斿熀宸瀂IP涓鐨勯【瀹㈡暟錛屽悓鏃訛紝榪樹細鏄劇ず鍏跺畠鐨刏IP鍊箋
銆銆SELECT ZIP, Count(ZIP) AS KYCustomersByZIP FROM
銆銆CustomersWHEREState = 鈥橩Y鈥 GROUP BY ALL ZIP
銆銆緇撴灉鍒嗙粍鍖呮嫭娼滃湪鏁版嵁涓鐨勬墍鏈塟IP鍊礆紝鐒惰岋紝瀵逛簬閭d簺涓嶆槸鑲濉斿熀宸瀂IP鍒嗙粍鐨勮仛鍚堝垪(KYCustomersByZIP)灝嗕細鏄劇ず0銆傝繙紼嬫煡璇涓嶆敮鎸併GROUP BY ALL銆
銆銆5.鍒嗙粍鍚庣瓫閫夋暟鎹
銆銆WHERE璇鍙ュ湪GROUP BY璇鍙ヤ箣鍓嶈繘琛岃$畻銆傚綋浣犻渶瑕佸湪鍒嗙粍涔嬪悗絳涢夋暟鎹鏃訛紝鍙浠ヤ嬌鐢℉AVING璇鍙ャ傞氬父鎯呭喌涓嬶紝WHERE璇鍙ュ拰HAVING璇鍙ョ殑榪斿洖緇撴灉鏄涓鏍風殑錛屼絾鏄鍊煎緱娉ㄦ剰鐨勬槸榪欎袱涓璇鍙ヤ笉鍙浜掓崲銆傚綋浣犺糠鎯戞椂錛屽彲浠ラ伒寰涓嬮潰鐨勮存槑錛氫嬌鐢╓HERE璇鍙ヨ繃婊よ板綍錛屼嬌鐢℉AVING璇鍙ヨ繃婊ゅ垎緇勩
銆銆涓鑸鎯呭喌錛屼綘浼氫嬌鐢℉AVING璇鍙ュ拰鏌愪釜鑱氬悎鍑芥暟璁$畻涓涓鍒嗙粍銆備緥濡傦紝涓嬮潰鐨勮鍙ヨ繑鍥炰竴涓鐨刏IP緙栫爜鍒楋紝浣嗘槸鍙鑳戒笉浼氬寘鍚娼滃湪鏁版嵁婧愪腑鎵鏈夌殑ZIP銆
銆銆SELECT ZIP, Count(ZIP) AS CustomersByZIP FROM
銆銆Customers GROUP BY ZIP HAVING Count(ZIP) = 1
銆銆鍙鏈夐偅浜涘寘鍚涓浣嶉【瀹㈢殑鍒嗙粍鏄劇ず鍦ㄧ粨鏋滀腑銆
銆銆6.榪涗竴姝ヤ簡瑙WHERE鍜孒AVING璇鍙
銆銆濡傛灉浣犲逛綍鏃跺簲璇ヤ嬌鐢╓HERE錛屼綍鏃朵嬌鐢℉AVING浠嶆棫寰堣糠鎯戱紝璇烽伒鐓т笅闈㈢殑璇存槑錛
銆銆WHERE璇鍙ュ湪GROUP BY璇鍙ヤ箣鍓嶏紱SQL浼氬湪鍒嗙粍涔嬪墠璁$畻WHERE璇鍙ャ
銆銆HAVING璇鍙ュ湪GROUP BY璇鍙ヤ箣鍚庯紱SQL浼氬湪鍒嗙粍涔嬪悗璁$畻HAVING璇鍙ャ
銆銆7.浣跨敤鑱氬悎鍑芥暟緇熻″垎緇勬暟鎹
銆銆鍒嗙粍鏁版嵁鍙浠ュ府鍔╂垜浠鍒嗘瀽鏁版嵁錛屼絾鏄鏈夋椂鎴戜滑鍙鑳介渶瑕佹洿澶氱殑淇℃伅鑰屼笉浠呬粎鏄鍒嗙粍銆備綘鍙浠ヤ嬌鐢ㄨ仛鍚堝嚱鏁版潵緇熻″垎緇勬暟鎹銆備緥濡傦紝涓嬮潰鐨勮鍙ユ樉紺烘瘡鎵硅㈣喘鍗曠殑鎬諱環閽便
銆銆SELECT OrderID, Sum(Cost * Quantity) AS OrderTotal 銆FROM Orders GROUP BY OrderID
銆銆瀵逛簬鍏跺畠鐨勫垎緇勬潵璇達紝SELECT鍜孏ROUP銆BY鍒楀繀欏誨尮閰嶃傝孲ELECT璇鍙ュ寘鍚鑱氬悎鍑芥暟鏃惰繖涓瑙勫垯鏄涓涓渚嬪栥
銆銆8.緇熻¤仛鍚堟暟鎹
銆銆浣犲彲浠ョ戶緇緇熻℃暟鎹涓烘瘡涓鍒嗙粍鏄劇ず涓涓鍒嗙被緇熻°係QL鐨凴OLLUP鎿嶄綔絎﹀彲浠ヤ負姣忎釜鍒嗙粍鏄劇ず涓涓棰濆栫殑鍒嗙被緇熻°傝繖涓鍒嗙被緇熻℃槸浣跨敤鑱氬悎鍑芥暟璁$畻姣忎釜鍒嗙粍涓鐨勬墍鏈夎板綍寰楀埌鐨勭粨鏋溿備笅闈㈢殑璇鍙ヤ負姣忎釜鍒嗙粍璁$畻OrderTotal錛
銆銆SELECT Customer, OrderNumber, Sum(Cost * Quantity) 銆AS OrderTotal FROM Orders GROUP BY Customer, OrderNumber WITH ROLLUP
銆銆瀵逛簬鏈変袱涓鍒嗗埆涓20鍜25 OderTotal鍊肩殑鍒嗙粍錛孯OLLUP鏄劇ず涓涓狾rderTotal鍊45銆俁OLLUP緇撴灉涓鐨勭涓鏉¤板綍鏄鐨勶紝鍥犱負瀹冩槸璁$畻鎵鏈夊垎緇勮板綍錛岃繖涓鍊兼槸鏁翠釜璁板綍闆嗙殑鎬誨箋
銆銆ROLLUP鍦ㄨ仛鍚堝嚱鏁頒腑涓嶆敮鎸 DISTINCT錛屼篃涓嶆敮鎸丟ROUP BY ALL璇鍙ャ
銆銆9.緇熻℃瘡涓鍒
銆銆CUBE鎿嶄綔絎︽瘮ROLLUP鏇磋繘涓姝ワ紝瀹冭繑鍥炴瘡涓鍒嗙粍涓閲嶅嶅肩殑涓鏁般傚畠鐨勭粨鏋滃拰ROLLUP鐩稿悓錛屼絾鏄瀵規瘡浣嶅㈡埛鐨勬瘡涓鍒桟UBE鍖呭惈涓涓棰濆栫殑璁板綍銆備笅闈㈢殑璇鍙ユ樉紺烘瘡涓鍒嗙粍鐨勭粺璁″拰棰濆栨瘡浣嶅㈡埛鐨勭粺璁°
銆銆SELECT Customer, OrderNumber, Sum(Cost * Quantity) 銆AS OrderTotal FROM Orders GROUP BY Customer,
OrderNumber WITH CUBE
銆銆CUBE鍙浠ョ粰鏈緇煎悎鐨勭粺璁°傚畠涓嶄粎瀹屾垚鑱氬悎鍜孯OLLUP鐨勫姛鑳斤紝榪樺彲浠ヨ$畻瀹氫箟鍒嗙粍鐨勫叾瀹冨垪錛屾崲鍙ヨ瘽璇達紝CUBE緇熻℃瘡涓鍙鑳界殑鍒楃粍鍚堛
銆銆CUBE涓嶆敮鎸丟ROUP BY ALL璇鍙ャ
銆銆10錛氬圭粺璁$粨鏋滄帓搴
銆銆褰揅UBE鐨勭粨鏋滀護浜鴻糠鎯戞椂錛堝畠緇忓父鏄榪欐牱錛夛紝鍙浠ユ坊鍔犱竴涓狦ROUPING鍑芥暟錛屽備笅鎵紺猴細
銆銆SELECT GROUPING(Customer), OrderNumber, Sum(Cost * Quantity) AS OrderTotal FROM Orders GROUP
BY Customer, OrderNumber WITH CUBE
銆銆緇撴灉涓姣忚屽寘鍚涓や釜棰濆栫殑鍊礆細
銆銆鍊1琛ㄧず宸﹁竟鐨勫兼槸涓涓緇熻″礆紝鏄疪OLLUP鎴朇UBE鐨勬搷浣滅︺
銆銆鍊0琛ㄧず宸﹁竟鐨勫兼槸涓鏉$敱鏈鍒濈殑GROUP BY璇鍙ヤ駭鐢熺殑璇︾粏璁板綍銆
❼ 問一個sql查詢,如何給查詢結果加上序號
SQL Server 下
SELECTROW_NUMBER()OVER(ORDERBYID)ROWNU,A1FROMTA1
解說:在這里,TA1是一個表,A1是表中的一個欄位,表的另一個欄位為ID本用於自增這兒用來排序。
SQL Server 中的ROW_NUMBER() 得到一個查詢出的順序,但這個函數要求給出一個查的排序方案,因為SQL Server的存儲是無關順序的。
在Oracle里,本就有rownum。可直接用:
SELECTrownum,A1FROMTA1
其它的資料庫可能有別的方案,不一而論。