【Oracle】高速查詢資料庫庫中工資最高的10條使用者記錄;
阿新 • • 發佈:2019-01-31
高速查詢資料庫庫中工資最高的10條使用者記錄;
1、查詢所有的使用者記錄
select * from user order by wage desc;
2、因為獲取所有的欄位太耗時,我們這裡只取每條記錄的實體地址——rowid;
select rowid from user order by wage desc;
3、我們獲取按照工資排序,工資最高的10條記錄的實體地址:
select rowid from(
select rowid from user order by wage desc
)
where rownum<10
4、為什麼我們不能把上面的兩次查詢直接合併成下面這個呢?
select rowid from user
where rownum <10
order by wage desc;
因為:查詢是先查詢,後排序,這個sql會先根據where後面的限制條件,獲取到前10條記錄,然後才是排序;而我們的邏輯是,獲取所有按照【工資】排序後,在獲取前十條的實體地址(rowid);
5、最後,根據in這個關鍵字,根據rowid匹配到對應的10條記錄
select c.wage,c.*,rowid from user
where rowid in (
select rowid from(
select rowid rid,wagefrom user order by wage desc
)
where rownum<10
)
order by c.wage
結束!
開源不易,感謝掃碼領紅包~