具體環境為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中...