TSQL查詢給定記錄的相關資料

2021-09-05 18:28:15 字數 890 閱讀 4292

具體環境為sql 2000 ,在一內容表中給定一條記錄,查尋編號大於這裡記錄的的資料,具體**如下

create    proc cmst_queryinterrelated

@id int,   ----給定的記錄的主鍵

@num int  ---需要條數

asdeclare @rnum int

declare @sql nvarchar(2000)

set @sql=''

set @rnum=0

select @rnum=count(id) from [cmst] where [id]> @id

if(@rnum-@num) > 0

begin

set @sql='select top '+ cast(@num as nvarchar) +' id,title,addtime from [cmst] where [id]>' + cast(@id as nvarchar)

endelse

begin

set @sql='select top '+ cast(@num as nvarchar) +' id,title,addtime from [cmst] where [id]>' + cast(@id as nvarchar)

+ 'union select top ' + cast((@num-@rnum) as nvarchar) +' id,title from [cmst] where [id] < ' + cast(@id as nvarchar)   end

exec (@sql)

上面的功能是,返回比給定id 大的 @num 條資料,如果 比id大的記錄不足@num條,那麼少的部分由id比@id小的記錄獲取(形成乙個環型),另外你可以在 where 裡加入其他條件比方同一分類等等..

T SQL 選擇某一記錄的前後相關記錄

比方有一商品表commodity 編號 名稱 其他列.1 a 2 b 3 c 4 x 5 t 6 a 7 b 如果給定 編號 id 為 3 需要取 4條記錄 那麼應該返回 id 1,2,4,5 四條記錄 如果給定 id 2 那麼返回 id 1,3,4,5 如果給定 id 7 那麼返回 id 3,4,...

資料庫查詢給定欄位的多行記錄的合併

最近在寫資料庫查詢的時候碰到一些問題,建表的時候建了三張實體表,兩張關係表,還是貼出來吧 student course表 student表 course表 class student表 class表 五個表聯合查詢,以學生為主題,把學生的班級和所選的課程全部顯示出來,結果是這樣的 一開始我寫了n多查...

T SQL查詢高階 資料集之間的運算

概述 關聯式資料庫的起源起源於數學中的集合概念.所以集合與集合之間,也同樣繼承了數學集合之間的運算.而對於在關聯式資料庫中,常常用於兩個資料集中並沒有直接的關聯式資料庫中的 關係 比如外來鍵.但兩個資料集會有間接的關係,比如兩屆比賽,參加比賽人員集合之間會有間接關係.資料集運算的種類 在t sql中...