不同資料庫限制取前N條記錄

2021-08-21 19:12:43 字數 1297 閱讀 1886

select *

from tablename

limit n  

select top n * 

from tablename  

(1)rownum(oracle從8開始提供的乙個偽列,是把sql出來的結果進行編號,始終從1開始常見的用途就是用來分頁輸出

oracle 取前10條記錄

1) select *

from tbname

where rownum < 11;

2) select *

from (select * from tbname order by id desc )

where rownum<=10;

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

select *

from (select a.*, rownum rn

from torderdetail a)

where rn >= 10 and rn <= 20

rownum的另類用法,有時候我們會遇到這種需求,要求輸出當月的所有天數,許多人會煩惱,資料庫裡又沒有這樣的表,怎麼輸出乙個月的所有天數呢?用rownum就能解決:

select trunc (sysdate, 'mm') + rownum - 1

from dual

connect by rownum <= to_number (to_char (last_day (sysdate), 'dd'))

(2)row_number() over()的使用(一般寫法row_number() over( order by order_date desc) 生成的順序和rownum的語句一樣,效率也一樣

而對於分組後取最近的10條紀錄,則是rownum無法實現的,這時只有row_number可以實現,row_number() over(partition by 分組字段 order by 排序字段)就能實現分組後編號,比如說要取近乙個月的每天最後10個訂單紀錄

select *

from (select a.*,row_number ()

over (partition by trunc (order_date)

order by order_date desc) rn

from torderdetail a)

where rn <= 10

ORACLE獲取資料庫表的前N條記錄

我剛開始修改乙個用oracle資料庫專案時,用sql select top 4 from table的方法想取得oracle資料庫表的前n條記錄 弄了很久老是出錯,後來才知道錯了 oracle得 用rownum n,不能用top 順便把網上的其它資料庫也記下 1.oracle select from...

資料庫查詢前N條記錄sql語句介紹

1.mssql a 查詢前n條記錄 select top n from table name b 查詢第n條到第m條記錄 select top n from select top m from table name order by column name a order by column nam...

安卓 SQLite 資料庫刪除前 n 條記錄

刪除前 n 條記錄對應的 sql 語句是 delete fromtablewhereidin selectidfromtableorder byidlimit n 其中 table 對應表名,id 表示自增 id 的列名。在 sqlite 中執行以下 即可 string sql delete fro...