簡單地說,top n問題就是:在select中,僅選擇按照某(些)列排序後top n的紀錄. 考慮到等值問題,又可以分為兩種: 一是僅僅返回n條紀錄(m 1), 二是還包括所有於第n條等值的紀錄(m 2). 當然最內層的子查詢也可以有其他的子句, 或者top n也可以應用在沒有order by的情況下,這樣更簡單.
1. sql server 7: 用 top n (with ties)
m1:
select top n * from mytable order by ord_col;
m2:
select top n with ties * from mytable order by ord_col;
注: sql server 7提供了percent n with ties, access 中提供了top n,但含義是m 2.
2. oracle 8i: 用 rownum<=n
m1:
select * from
( select * from mytable order by ord_col desc)
where rownum<=n
m2:
select * from mytable where ord_col>=
(select min(ord_col) from
( select * from mytable order by ord_col desc)
where rownum<=n)
order by ord_col desc
注意以下兩種錯誤用法:
wrong 1:
select * from mytable
where rowid<=n
order by ord_col desc;
wrong 2:(因為where rownum<=n 在order by 前執行)
select * from mytable
where rownum<=n
order by ord_col desc;
3: db2
用fetch first n rows only
m1:
select * from mytable
order by ord_col desc
fetch first n rows only
分組Top N 問題
今天面試,面試官給了這樣乙個場景 有兩張表,一張表存放車隊id,班組id,司機id 另一種表存放司機id,運營時間,運營里程 要查詢出7月份每個車隊每個班組裡的 top 3 這就要用到row number 函式 首先按需求建兩張表 create table demo of topn car comp...
資料庫問題
資料庫問題 delphi windows sdk api 怎樣將兩個.dbf資料庫檔案,匯入到乙個表裡?在sql中有乙個叫企業管理器的東西.找到它然後找到你的目標資料庫,滑鼠右鍵有個匯入資料,裡面有個選項叫 使用一條查詢語句匯入.然後你就在這個查詢語句中寫一條sql命令,該命令同時查兩張表,但是只會...
資料庫問題!!
怎麼合併成乙個?這麼寫可以 select model,price from pcs where model in select model from products where maker b union select model,price from laptops where model in...