1. mysql查詢
[sql]view plain
copy
mysql>
select
* from
table
limit 20,10; // 檢索記錄行 21-30
//為了檢索從某乙個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1:
mysql> select
* from
table
limit 95,-1; // 檢索記錄行 96-
last
.
//如果只給定乙個引數,它表示返回最大的記錄行數目:
mysql> select
* from
table
limit 5; //檢索前 5 個記錄行
//換句話說,limit n 等價於 limit 0,n
2. sqlserver查詢
2.1先根據id公升序 查詢前30條記錄資訊,再將查詢的結果根據id降序 查詢前20條記錄
[sql]view plain
copy
select
*
from
(select
top20 *
from
(select
top30 *
from
表名
order
byid) t1
order
byid
desc
) t2
order
byid
2.2先將查詢出前10條記錄資訊,然後將這10條資訊從結果集中剔除掉
[sql]view plain
copy
select
top10 *
from
表名 where
id notin(
select
top10 id
from
表名 order
byid
asc)
order
byid
2.3先查詢出前10條記錄最大的id,然後再查詢出》id的前10條記錄資訊
[sql]view plain
copy
select
top10 *
from
表名
where
id> (
select
max(id)
from
(select
top10 id
from
表名
order
byid) t1)
order
byid
2.4sqlserver2005後可以根據row_number查詢
[sql]view plain
copy
select
*
from
(select
*, row_number() over (
order
byid)
asrownum
from
表) t
where
rownum
between
21
and30
3.oracle查詢
[sql]view plain
copy
select
* from
(select
rownum
no,*
from
表名 where
rownum<=30 )
where
no>20;
4.oracle的rownum與rowid區別:
rownum是對結果集加的乙個偽列,即先查到結果集之後再加上去的乙個列 (強調:先要有結果集)。簡單的說 rownum 是對符合條件結果的序列號。它總是從1開始排起的。所以你選出的結果不可能沒有1,而有其他大於1的值;參考:
rowid 與 rownum 雖都被稱為偽列,但它們的存在方式是不一樣的,rowid 可以說是物理存在的,表示記錄在表空間中的唯一位置id,在db中唯一。只要記錄沒被搬動過,rowid是不變的。rowid 相對於表來說又像表中的一般列,所以以 rowid 為條件就不會有 rownum那些情況發生
查詢10到20的記錄
有三種方法可以實現 一 搜尋前20條記錄,指定不包括前10條 語句 select top 20 from tbl where id not in select top 10 id from tbl 二 搜尋記錄生成臨時表,建立臨時表的自增id。通過取得自增id的10select top 10 fro...
查詢資料庫中的第10到20條記錄
先給出一條錯誤的方法 select from table where rownum 20 and rownum 10 這種方式是不正確的 rownum是偽列只能用 不能用 between.and.這裡的不能用,不是指使用了會產生語法錯誤,而是查詢後不能返回結果,或者返回的結果不知所云 1.selec...
取表中第30到第40條記錄
標實字段沒有規律 select top 10 from 飛狐工作室 where 身份證號碼 not in select top 30 身份證號碼 from 飛狐工作室 order by 身份證號碼 asc 標實字段有規律 例如 自動編號 select top 10 from 章立民研究室 where...