SQL指定查詢N行到N行的語句怎麼寫

2022-04-30 03:49:14 字數 4209 閱讀 4581

1樓:匿名使用者

select *

from test

where rownum>=10

and rownum<=30

機子上沒裝oracle啊,不過好像記得這樣是可以的,你試試還有啊,你想選什麼樣的,最好加上order by

2樓:

用分頁的方法

這是我分頁的儲存過程

if exists(select * from sysobjects where name= 'pg_view')

drop proc pg_view

gocreate proc pg_view

@pagesize int=10, --每頁顯示

@pageindex int=1, --頁面索引

@pagekey varchar(100), --查詢欄位名

@pagesort varchar(50), --排序欄位名

@pagetable nvarchar(50), --表名

@pagetotal int output --總頁數

asdeclare @total int,@sql nvarchar(200)

set @sql=n'select @total2= count(*) from ' + @pagetable

exec sp_executesql @sql, n' @total2 bigint output', @total output ----@total2 bigint output 設定引數

--求總頁面

if(@total<@pagesize) --總行數小於每頁顯示的行數則總頁數等於 1

set @pagetotal=1

else

begin

if((@total%@pagesize)=0) --總行數能否被每頁顯示的行數整除

begin

set @pagetotal=@total/@pagesize

endelse

begin

set @pagetotal=@total/@pagesize+1

endend

if(@pagetotal<@pageindex) --當總頁數小於查詢的頁數時eg:如果一共5頁使用者輸入6頁

set @pageindex=@pagetotal

declare @exec nvarchar(1000),@pageremove int

set @pageremove=(@pageindex-1)*@pagesize --查詢當前頁面之前的資料

set @exec=n'select top ' + convert(nvarchar(10),@pagesize) + @pagekey + n' from '+ @pagetable+n' where '+ @pagesort+

n' not in (select top '+ convert(nvarchar(10),@pageremove)+ @pagesort +n' from '+ @pagetable+

n' order by '+ @pagesort+ n' desc) order by '+@pagesort+n' desc'

exec (@exec)

godeclare @a int

exec pg_view 21,5,'*','number','test',@a output

print @a

求sql中 從第幾行取幾行的語句!

3樓:

--從table 表中取出第 m 條到第 n 條的記錄:(not in 版本)

select top n-m+1 *

from table

where (id not in (select top m-1 id from table ))

從table表中取出第m到n條記錄 (exists版本)

select top n-m+1 * from table as a where not exists

(select * from (select top m-1 * from table order by id) b where b.id=a.id )

order by id

--m為上標,n為下標,例如取出第8到12條記錄,m=8,n=12,table為表名

select top n-m+1 * from table

where id>(select max(id) from

(select top m-1 id from table order by id asc) temp)

order by id asc

4樓:匿名使用者

select top(5) *

from (select *, row_number() over (order by id) as rownum

from reply) as tab where tab.rownum >=15搞定!

5樓:

在什麼狀態?如果是查詢分析器,選中幾行就執行幾行,如果是在儲存過程中除了通過/**/遮蔽不需要的語句,別無它法.

mysql中,我想獲取第n行的所有資料,該sql語句怎麼寫呀

6樓:匿名使用者

select * from ........... limit n行, 1

查詢第m到n行的sql語句 資料庫是access m,n是變數。

7樓:匿名使用者

如果有一張表userinfo(user_id,user_name,desc),則該錶第m到n行的sql語句為。

8樓:匿名使用者

先計算出m-》n共多少行,x=m-n+1,同時假設你的行號欄位是id

select * from (select top x * from (select top n * from 表 order by id desc) order by id) order by id desc

9樓:匿名使用者

access資料庫不熟悉 不過如果可以使用rownum的話 就是 rownum>=m and rownum<=n

不能使用rownum的話 應該就是用top吧 先取一次top n就是取從1到n 然後在寫乙個 not in

top m 這樣就可以取到從m到n了 具體是用m還是m+1 或者m-1你自己看需求測試下吧

如何在sql server中查詢從n條記錄開始的m條記錄?查詢語句該怎麼寫?

10樓:

首先在id上建立聚集索引是必須的。

如果id是連續的,樓上的的用id來限定語句範圍是很快的。

如果id不是連續的,樓主的語句使用了not in,一般這樣效率是很低的。

可以把語句改成

select top m *

from table

where id> (select max(id) from (select top n id from table order by id) a)

order by id

這樣可以一定程度上提高一些效能。

比如我的表中有300多萬條記錄,使用樓主的語句執行時間需要9秒多,而用我的語句3秒多。

11樓:網路夜行者

這個查詢語句在sql裡是不可能實現的,因為在sql 裡的資料並沒有位置資訊,也就是說沒有指定哪條資料是第一條,哪個是第二條,這樣也就沒有第n條,更沒有相對n的m條,這是因為sql為了提高查詢的速度來設計的,因為如果它從第一條到第二條直到第n條,它要用的時間可能會很長,所以sql就不用這種查詢方法。

當然,如果你的每一條資料都有相應的id的話,你可以通過這個id來實現這一方法,就像上面的人說的那樣

select * from table where id=n and id<(n+m)

12樓:

select * from table where id between n and m

13樓:

select * from table where limit n and m

或select * from table where id between n and m

Excel,在N行N列中查詢某值,返回行值列值

機靚歸方雅 match 你要查詢的值,目標區域,匹配精度 如果要返回行值 例如在b3 b8這個區域中查詢 3,輸入 match 3,b3 b8,false 假設3在b4格,則返回2 這裡的返回值是相對行值 如果要返回列值 例如在b3 b8這個區域中查詢 3,輸入 match 3,b3 f3,fals...

新生求助 SQL怎樣刪除之前查詢過的行,就是查詢一條記錄刪除一條記錄

查詢的時候,你將num儲存下來嘛,刪除的時候使用儲存的這個值來刪 建立測試表 create table s test id int identity 1,1 name varchar 20 隨機生成20條資料 insert into s test name select right 000000 c...

N96和N97行貨價效比是否夠高?20分的提問

諾基亞n96在京東 是2799,n97因為版本的不同,所以 格不相同,京東 n97mini 是2895,n97i 是3699元,更多具體 請去京東 查詢。建議你買n96,因為它採用的與n85相同的s60第三版系統,功能一樣強大 而n97採用的s60第五版系統軟體和遊戲太少,沒什麼可玩性。n97價效比...