oracle、sql server、mysql、db2 查詢 區別

mysql查詢前幾條記錄
SELECT   *   FROM   table   LIMIT   5;       
    
select     *     from     issu_info     limit     0,6       
      
Limit     0,6       
這裏是對的,顯示前6條       
      
      
select     *     from     issu_info     limit     7,6;       
      
Limit     7,6       
從第8條開始取,取6條   

oracle查詢前幾條記錄

select * from table_name where rownum<X --X爲前多少條記錄
select * from (select a.*,a.rownum rn from (select * from table_name) a where a.rownum<M) where rn>n --這句就是從n到m也的數據,分爲三層結構




下面是關於rownum的介紹

Rownum和row_number()over()的使用

ROWNUM是Oracle從8開始提供的一個僞列,是把SQL出來的結果進行編號,始終從1開始,常見的用途就是用來分頁輸出.

比如

SELECT *  

FROM torderdetail a  

WHERE ROWNUM <= 10  

這條語句就是輸出前10條紀錄,在這裏用途上類似於sql sever的top,不過rownum對於指定編號區間的輸出應該說更強大

SELECT *  

FROM (SELECT a.*, ROWNUM rn 

FROM torderdetail a)  

WHERE rn >= 10 AND rn <= 20 

這條語句即是輸出Oracle查詢第10到第20條紀錄,這裏之所以用rownum rn,是把rownum轉成實例,因爲rownum本身只能用 <=的比較方式,只有轉成實列,這樣就可做 >=的比較了。

在實際用途中,常常會要求取最近的幾條紀錄,這就需要先對紀錄進行排序後再取rownum<=

一般常見的

SELECT *  

FROM (SELECT a.*  

FROM torderdetail a  

ORDER BY order_date DESC) 

WHERE ROWNUM <= 10  

而在CSDN曾經發生過討論,關於取近的10條紀錄,有人給出這樣的語句

SELECT a.*  

FROM torderdetail a  

WHERE ROWNUM <= 10  

ORDER BY order_date DESC 

之所以會出現這樣的語句,主要是從效率上的考慮,前面條語句,是要進行全表掃描後再排序,然後再取10條紀錄,後一條語句則不會全表掃描,只會取出10條紀錄,很明顯後條語句的效率會高許多。

 



sql server查詢前幾條記錄




select top X * from table_name  --查詢前X條記錄,可以改成需要的數字。
select top n * from (select top m * from table_name order by column_name ) a order by column_name desc  --查詢第N到M條記錄。常用的分頁也是這種方式。
例如常用的分頁方式:
declare @page int
declare @row int
set @page=2 --頁數
set @row=3  --每頁展示行數
select top (@row) * from (select top (@row*@page) * from table_name order by id  ) a order by id desc  --最基本的分頁方式,改變@row和@page達到分頁效果





 db2 查詢前幾條記錄
select * row_number() over(order by col1 desc) as rownum where rownum<=n 

或者 

select column from table fetch first n rows only 
發佈了4 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章