Ⅰ 如何在sql中查詢第N條到第M條數據
with cte as ( select RowNumber=row_number() over(order by id),* from 表名 ) select * from cte where RowNumber between 10 and 20 這是查10到20行的
Ⅱ sql語言中查詢第n行第m列怎麼表達
sql="select * from table m='"&m&"'and n="&n
n表示你要查詢的行數
m表示你要查詢的列名
Ⅲ 如何查詢得到SQL資料庫表中第N行數據,N是一個參數,不確定的int數
sql server里好像沒有查詢特定行的關鍵字,可以試試:select top 1 * from 表名 where 表的主鍵欄位 not in (select top 參數-1 表的主鍵欄位 from 表名)
例如:
表名:test
id int primary key,
name varchar 50.
想要查詢第50行的記錄:
select top 1 * from test where id not in (select top 49 id from test)
還可以根據需要進行排序。
Ⅳ 如何在SQL Server中查找從N條記錄開始的M條記錄查詢語句該怎麼寫
首先在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秒多。
Ⅳ sql如何使用游標查詢指定行記錄
可以
不過不用游標也可以
select * from (select *,row_number() over(order by 排序列) as rownum from table) a
where rownum>=n and rownum<=m
Ⅵ sql獲取第n條記錄中的第m個數據
你是已經查詢出來了很多行。
但是只要 第一行數據?
Oracle 的話:
SELECT
*
FROM
(
你的那個查詢
)
WHERE
ROWNUM = 1;
DB2 的話:
你的那個查詢
fetch first 1 rows only;
SQL Server 的話:
SELECT TOP 1 你的查詢的其他列 FROM 你的表 WHERE 你的條件
MySQL 的話:
你的那個查詢
LIMIT 1;
Ⅶ sql 取中間幾條記錄
--從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)
-----------------------------------------------------------------------------------------------------------------------------------------
表pictures中有兩個欄位:id與title。id是自動編號的
表中有5條記錄:1--p1,2--p2,3--p3,4--p4,5--p5
一、找到了一個小規律
string sqlstr = "select top 4 * from pictures order by id desc "; //查詢結果p5,p4,p3,p2---說明是整個表先進行排序,再進行查詢的
string sqlstr = "select top 3 * from (select top 4 * from pictures order by id desc) "; //-------p5,p4,p3
string sqlstr = "select top 3 * from (select top 4 * from pictures order by id desc) order by id desc";//-------p5,p4,p3
string sqlstr = "select top 3 * from (select top 4 * from pictures order by id desc) order by id asc"; //-------p2,p3,p4
二、獲取單條記錄:
假設表中一共有counts條記錄,現在想要查詢第n條記錄,則sql語句應是:
select top 1 * from (select top (counts-n+1) * from pictures order by id desc) order by id asc
第三條記錄:
string sqlstr = "select top 1 * from (select top 3 * from pictures order by id desc) order by id asc";//-------p3
三、獲取表中多條連續的記錄
假設表中一共有counts條記錄,現在想要查詢第n到第m條的記錄,則sql語句應是:
select top (m-n+1) * from (select top (counts-n+1) * from pictures order by id desc) order by id asc
獲取第二到第四條記錄:
Ⅷ sql語句查詢結果只取從第m條開始到第n條結束請問該怎麼做
取n到m行
1.
select top m * from tablename where id not in (select top n id from tablename order by id asc/*|desc*/)
2.
select top m * into 臨時表(或表變數) from tablename order by columnname -- 將top m筆插入到臨時表
set rowcount n --只取n條結果
select * from 表變數 order by columnname desc
3.
select top n * from
(select top m * from tablename order by columnname) a
order by columnname desc
4.如果tablename里沒有其他identity列,那麼:
先生成一個序列,存儲在一臨時表中.
select identity(int) id0,* into #temp from tablename
取n到m條的語句為:
select * from #temp where id0 > =n and id0 <= m
如果你在執行select identity(int) id0,* into #temp from tablename這條語句的時候報錯,那是因為你的DB中間的select into/bulk屬性沒有打開要先執行:
exec sp_dboption 你的DB名字,'select into/bulk',true
5.如果表裡有identity屬性,那麼簡單:
select * from tablename where identity_col between n and m
6.SQL2005開始.可以使用row_number() over()生成行號
;with cte as
(
select id0=row_number() over(order by id),* from tablename
)
select * from cte where id0 between n to m
Ⅸ 查詢第m到n行的sql語句 資料庫是ACCESS m,n是變數。
如果有一張表userinfo(user_id,user_name,desc),則該表第m到n行的sql語句為:
select user_id,user_name,desc from (select top n user_id,user_name,desc,row_number() over(order by user_id) as rowindex from userinfo) t where t.rowindex>=m;
以上若還有疑問,可以Hi我。