sql 查詢記錄數結果集某個區間內記錄

2022-09-24 22:57:15 字數 1030 閱讀 2858

以查詢前20到30條為例,主鍵名為id

方法一: 先正查,再反查

select top 10 * from (select top 30 * from tablename order by id asc) a order by id desc

方法二: 使用left join

select top 10 a.* from tablename a

left outer join (select top 20 * from tablename order by id asc) b

on a.id = b.id

where b.id is null

order by a.id asc

方法三: 使用not exists

select top 10 * from tablename a

where id 程式設計客棧not exists

(select top 20 * from tablename b on a.id = b.id)

方法四: 使用not in

select top 10 * from tablename

where id not in

(select top 20 id from tablename order by i程式設計客棧d aswww.cppcns.comc)

order by id asc

方法五: 使用rank()

select id from

(select rank() over(order by id asc) rk, id from tablename) t

where rk between 20 and 30

中第五種方法看上去好像沒有問題,查了下文件,當over()用於rank/row_number時,整型列不能描述乙個列,所以會產生非預bs**fr期的效果. 待考慮下,有什麼辦法可以修改為想要的結果.

本文標題: sql 查詢記錄數結果集某個區間內記錄

本文位址: /shujuku/mssql/90317.html

sql查詢結果集匯出Excel

t sql exec master.xp cmdshell bcp 庫名.dbo.表名out c temp.xls c q s servername u sa p 引數 s 是sql伺服器名 u是使用者 p是密碼 說明 還可以匯出文字檔案等多種格式 declare str varchar 600 s...

mysql查詢結果翻轉 如何把sql結果集翻轉

我用的是sql 請教如何把sql結果集翻轉?如下一張表 checkinout 顯示員工簽到,簽退的考勤表,checktype 考勤型別 i 表示簽到,o 表示簽退 timeflag 4表示上午,5表示下午 checktime 簽到,籤 userid checktype checktime timef...

SQL 臨時結果集CTE查詢總結

cte是乙個命名的臨時結果集,僅在單個sql語句 例如select,insert或delete 的執行範圍內存在。cte不作為物件儲存,僅在查詢執行期間持續,提供了更好的可讀性和效能。可以使用with子句來建立cte,with子句用於定義乙個子查詢關係,以供select查詢引用,它可以扁平化巢狀查詢...