這還是城主提出的問題,感覺很有意思,
比如乙個記錄表products,裡面有個主鍵id,乙個型別typeid,就是查詢出每個typeid的前3個記錄,還有乙個型別表productstype
可是我sql還是太菜。還是請假了夕顏兄
夕顏還是使用sql自拼接來解決這個問題。
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+'select top 3 distinct typeid from products where typeid = '''+cast(isnull(typeid,'') as varchar)+''' union ' from producttype
set @sql=substring(@sql,0,len(@sql)-4)+'order by typeid'
print @sql
exec(@sql)
或者declare @sql varchar(8000)
set @sql=''
select @sql=@sql+'select top 5 * from products where typeid = '''+cast(typeid as varchar)+''' union '
from (select distinct typeid from products) t
set @sql=substring(@sql,0,len(@sql)-4)+'order by typeid'
print @sql
exec(@sql)
他們效果是等同的。
使用這樣的方法可以解決問題,也比較靈活了。但是夕顏說這個是下下策,因為sql型別的長度不好確定。
應該還有其他好的方法,哪位仁兄提供乙個吧
本文使用blog_backup未註冊版本匯出,請到soft.pt42.com註冊。
Sql 查詢每個組的前3條記錄
表 product 列 prdid,prdname,userid 乙個userid有多個product的資訊 查詢每個user的3種產品的資訊 select from product a where a.prdid in select top 3 prdid from product where u...
SQL查詢每個分組的前N條記錄
if object id tempdb.dbo.t is not null drop table t create table t id varchar 3 gid int,author varchar 29 title varchar 39 date datetime insert into t ...
SQL查詢每個分組的前N條記錄
在寫乙個儲存過程中,遇到了乙個問題,自己寫的 sql總是執行效率太低,於是上網搜尋,學到了乙個新招,都怪自己平時不愛學習啊,不過這個語法真的很厲害。需求 取乙個表中每個 id的最新三條資料 按照更新時間倒序取 select from t as t where 3 select count from ...