oracle:
rownum是把sql出來的結果進行編號,始終從1開始,常見的用途就是用來分頁輸出。
select * from ts_user where rownum < 11;
select * from (select * from ts_user order by id desc ) where rownum<=10;
把rownum轉成例項,因為rownum本身只能用<=的比較方式,只有轉成實列,這樣就可做 >=的比較了。
select * from
(select a.*, rownum rn from ts_user a)
where rn >= 10 and rn <= 20
row_number() over()
over裡頭的分組及排序的執行晚於「where,group by,order by」的執行。
select * from (
select account,user_name,**row_number() over( order by create_time) rs** from ts_user
)where rs <11
select * from (
select gender,user_name,create_time,**row_number() over(partition by gender order by create_time) rs** from ts_user
)where rs >= 10 and rs <= 20
mysql:
索引從0開始,
select * from ts_dict_entry order by id desc limit 0,10
等同於
select * from ts_dict_entry order by id desc limit 10
從10開始,取11條
select * from ts_dict_entry order by id desc limit 9,11
分組後排序
select * from ts_dict_entry a
where 2>(select count(*) from ts_dict_entry where type_id=a.type_id and sort_nosqlserver:
select top 10 * from ts_user order by id desc
子查詢結果要取別名
select * from (
select account,user_name,row_number() over( order by create_time) rs from ts_user
) t where t.rs <11
子查詢結果要取別名
select * from (
select gender,user_name,create_time,row_number() over(partition by gender order by create_time) rs from ts_user
)t where rs >= 10 and rs <= 20
select * from (
select account,user_name,row_number() over( order by create_time) rs from ts_user
) t where rs between 10 and 20
postgresql:
從第3條開始,取10條
select * from ts_dict_entry order by id desc limit 10 offset 2
分組查詢,與mysql一致
select * from ts_dict_entry a
where 2>(select count(*) from ts_dict_entry where type_id=a.type_id and sort_noorder by a.type_id;
sql取前20條資料的後10條資料(通用)
sql在沒有id主鍵或單一主鍵 即組合主鍵或沒有主鍵的情況 如何取前20條資料的後10條資料,一般通用的方法仍是用臨時表,效率一般,但比較通用,在各種情況下均可用此方法.由此也可衍生出sql的分頁儲存過程,尤其適合經常對不同表的資料進行分頁,格外適用.當然,方法並非這一種,具體視不同情況設計最優的s...
查詢表中第10條至20條的記錄
canby 22 49 51 select top 10 from tables where id select max id from select top 9 id from tables order by id as a order by id canby 22 50 34 有錯漏的改一下,大...
查詢資料庫中的第10到20條記錄
先給出一條錯誤的方法 select from table where rownum 20 and rownum 10 這種方式是不正確的 rownum是偽列只能用 不能用 between.and.這裡的不能用,不是指使用了會產生語法錯誤,而是查詢後不能返回結果,或者返回的結果不知所云 1.selec...