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