Oracle query 的問題---有關Top的用法 |
尚未結案
|
tailen
中階會員 發表:82 回覆:109 積分:63 註冊:2002-04-08 發送簡訊給我 |
各位大大好:
今天我的工程師告訴我一個Oracle query的問題,讓我很訝異!
假設資料庫內容如下:table name = data1
Name score
A 80
B 70
C 90
D 65
E 69
F 50
G 20
H 50
I 30
J 50 第一個問題:
下達:SELECT * FROM data1
結果:所有資料都出來,但是每次的結果排序不一定(不會按照A到J,且每次都不一定相同) 第二個問題:
要找出前三名:
SQL: SELECT TOP 3 * FROM data1 WHERE score>60 Order by score
出來的結果不一定會是:
C 90
A 80
B 70
而是有可能是
C 90
B 70
D 65
(他的說法是:因為oracle每次查詢的排序不一定,所以先做top時就有可能取得到還未排序的前三筆,之後再做order by score的動作) 是真的嗎?若是,是不是要設定primary key就可以了呢?
謝謝各位大大的指教!
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
tailen 你好: 第一個問題:
沒有 Primary Key / Index , 也沒下 order by , 當然是...隨便排序囉. 第二個問題:
SELECT TOP 3 * FROM data1 WHERE score>60 Order by score
我不知 Oracle 能用 "Top XX", 印象中...只有 MSSQL / ACCESS 才能這樣下.
Oracle 若想達成類似的結果, 我都下:
SELECT * FROM data1 WHERE score>60 and nownum<3 Order by score
|
tailen
中階會員 發表:82 回覆:109 積分:63 註冊:2002-04-08 發送簡訊給我 |
引言: SELECT TOP 3 * FROM data1 WHERE score>60 Order by score 我不知 Oracle 能用 "Top XX", 印象中...只有 MSSQL / ACCESS 才能這樣下. Oracle 若想達成類似的結果, 我都下: SELECT * FROM data1 WHERE score>60 and nownum<3 Order by scoreMickey大大您好: 謝謝您的回覆! 小弟再請教一下,nownum是Oracle的內定變數嗎?該變數是紀錄目前query幾筆了?小弟對Oracle較不熟悉,還請大大不吝指教! |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
擷取一段 Oracle 的文件, 參考看看: A pseudocolumn behaves like a table column, but is not actually stored in the
table. You can select from pseudocolumns, but you cannot insert, update, or delete
their values. This section describes these pseudocolumns:
CURRVAL and NEXTVAL
LEVEL
ROWID
ROWNUM RowNum 像是.....'流水號'
|
Akqj1098
一般會員 發表:14 回覆:60 積分:14 註冊:2002-05-17 發送簡訊給我 |
引言: tailen 你好: 第一個問題: 沒有 Primary Key / Index , 也沒下 order by , 當然是...隨便排序囉. 第二個問題: SELECT TOP 3 * FROM data1 WHERE score>60 Order by score 我不知 Oracle 能用 "Top XX", 印象中...只有 MSSQL / ACCESS 才能這樣下. Oracle 若想達成類似的結果, 我都下: SELECT * FROM data1 WHERE score>60 and nownum<3 Order by scoreMickey 大大,您這邊好像手誤了 不是 nownum,應該是 Rownum 我記得曾經有個前輩告訴過我 Rownum,是Oracle 在每筆資料,自動會做一個記號(序號) 通常 Rownum 是一個隱藏的欄位 TOP 這個指令,好像不是 Oracle 的吧 應該是M$-SQL的指令吧 M$多了這個指令,我個人覺得滿不錯的喲 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |