日期:2014-05-17  浏览次数:20513 次

sql 查询查询查询查询查询,100%结贴

如上图两表,,怎么查出AuctionSell 表中CreateUid(也就是UserTb中UserId)以“66000”开头的每个不同用户前三条数据。。例如UserTb中UserId以“66000”开头的有 660007和660008两位,就查出 AuctionSell 表中CreateUid=660007 的Top3 加上CreateUid=660008 的Top3  ,。。 在线等。
SQL 行业数据

------解决方案--------------------
引用:
select *
from (select *,rn=ROW_NUMBER() OVER(partition by UserId order by asID) from AuctionSell)t
where rn<=3

忘记了加条件

select *
from (select *,rn=ROW_NUMBER() OVER(partition by UserId order by asID) from AuctionSell where cast(UserId as varchar) LIKE '66000%')t
where rn<=3
------解决方案--------------------
SELECT B.*
FROM dbo.userTb A
INNER JOIN dbo.AuctionShell b
ON A.UserId  = b.UserID
WHERE a.Userid LIKE '66000%' AND
(
SELECT COUNT(1)
FROM dbo.AcuctionShell n
WHERE n.UserId = b.UserID
AND n.ASID <= b.ASID
) <= 3