TOP 子句用於規定要返回的記錄的數目。對於擁有數千條記錄的大型表來說,TOP 子句是非常有用的。
註釋:並非所有的數據庫系統都支持 TOP 子句。
MySQL 和 Oracle 中的 SQL SELECT TOP 是等價的
MySQL 語法
SELECT * FROM table LIMIT 5,10; // 檢索記錄行 6-15
SELECT * FROM Persons LIMIT 5 //檢索前 5 個記錄行
SELECT * FROM table LIMIT 95,-1; // 檢索記錄行 96-last
Oracle 語法
可能都知道ROWNUM只適用於小於或小於等於,如果進行等於判斷,那麼只能等於1,不能進行大於的比較。
ROWNUM是oracle系統順序分配爲從查詢返回的行的編號,返回的第一行分配的是1,第二行是2,依此類推。
ROWNUM總是從1開始,不管當前的記錄是否滿足查詢結果,ROWNUM返回的值都是1,如果這條記錄的值最終
滿足所有的條件,那麼ROWNUM會遞加,下一條記錄的ROWNUM會返回2,否則下一條記錄的ROWNUM仍然返回1。
理解了這一點,就清楚爲什麼一般的ROWNUM大於某個值或等於某個不爲1的值是無法返回結果的,因此對於
每條記錄的ROWNUM都是1,而ROWNUM爲1不滿足查詢的結果,所以下一條記錄的ROWNUM不會遞增,仍然是1,
因此所有的記錄都不滿足條件。
SELECT * FROM Persons WHERE ROWNUM <= 5
SQL TOP 實例
"Persons" 表中選取頭兩條記錄。
SELECT TOP 2 * FROM Persons
"Persons" 表中選取 50% 的記錄
SELECT TOP 50 PERCENT * FROM Persons