查詢出每個型別的前3個

2022-01-28 19:17:17 字數 935 閱讀 7747

這還是城主提出的問題,感覺很有意思,

比如乙個記錄表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 ...