各資料庫限制結果集小結

2022-08-23 16:03:12 字數 2461 閱讀 7602

在查詢資料庫時,經常會遇到限制結果集返回條數的情況。比如,查詢前三條記錄,又或者查詢中間五條記錄等等;下面我們就各種資料庫限制結果集條數進行總結一番:

1

、mysql

mysql資料庫中提供了limit關鍵字用來限制返回的結果集,語法為「limit 需要返回記錄的首行行數,要返回記錄的條數」,例如:

select

*from t_employee order

by employee_id limit 10,5

查詢結果就是5行資料,從第10行開始。

2

、sqlserver2000

微軟sql server2000提供了top關鍵字用來返回結果集中的前n條記錄,語法為「

select

top 條數 字段列表 from

表名」。例如:

select

top10

*from t_employee order

by employee_id desc

返回10條記錄。

mssqlserver 2000並沒有提供類似limit的功能——返回從第n行開始的m行資料,不過這也不是不能實現,想必了解資料庫的童鞋都曉得:

select

top10

*from

t_employee

where employee_id in

(select

top14 employee_id from t_employee order

by employee_id asc

)order

by employee_id desc

這樣、同樣可以查詢從第5條開始的10條資料。

3

、sql server2005

mssqlserver2005相容幾乎所有的mssqlserver2000的語法,所以、在此就可以使用sqlserver2000的語法來解決限制結果集行數的功能。另外、sqlserver2005提供了新特性幫助更好的限制結果集行數的問題,這個新特性就是視窗函式row_number()。語法為「

select row_number() over(order

by排序字段), 其他字段 form t_表名」。例如:

select

*from

(

select row_number() over(order

by employee_id) as

row_num, employee_name from t_employee

)where row_num <

15and row_num >=

5注意、開窗函式只能出現在select或者order by子句中。

4、oracle

oracle也支援開窗函式row_number(),其語法和mssqlserver2005相同,上面的sql語句在oracle中也可以執行。氮素、這裡我們主要介紹另乙個保留字的功能。保留字rownum。例如:

select

*from

(

select rownum as rowno, employee_name from t_employee where rowno <15)

where rowno >=

5注意、rownum從1開始計數,當第一條記錄不符合where條件時,下一條記錄依舊從1開始計數。所以、這裡需要注意上面子查詢是從小於15開始的,若是從大於等於5查詢,將查不到任何資料。

5、db2

db2也支援開窗函式row_number(),其用法和mssqlserver2005以及oracle相同。

select

*from

(

select row_number() over(order

by employee_id) as

row_num, employee_name from t_employee

)where row_num <

15and row_num >=

5該語句這裡也是可以執行的,除此之外,db2還提供了fetch關鍵字用來提取結果集的前n行,其語法為「

fetch first 行數 rows only

」,比如:

select

*from t_employee order

by employee_id fetch first 5 rows only

上面就可以獲取結果集中前5名employee的資訊了。注意、fetch關鍵字需要放置在order by子句後面。

各資料庫,怎麼獲取SQL結果集的前n條資料?

一 在sql server資料庫中使用top關鍵字 1 獲取第1條記錄 select top 1 colume name from table name colume name 欄位名 取所有欄位用 table name 表名 2 獲取前n條記錄 select top n from table na...

常見幾種資料庫查詢結果集限制行

sqlserver select top10 fromtablename informix select first10 fromtablename oralce select fromtablenamewhererownum 10 mysql sql1select fromtablename li...

Shell指令碼讀取mysql結果集各資料項的值

在linux下用shell指令碼讀取mysql結果集各資料項的值,按行讀取sql結果,將sql執行結果讀取到shell變數中,然就可進行處理。hostname 172.16.xx.xx 資料庫資訊 port 3306 username root password root dbname log 資料...