11,847
社区成员
发帖
与我相关
我的任务
分享create table 用户表(id int,uname nvarchar(10))
insert into 用户表 select 1,'张三' union all select 2,'李四'
create table 产品表(uid int,pname nvarchar(10),price int)
insert into 产品表 select 1,'AAAA',10
insert into 产品表 select 1,'BBBB',20
insert into 产品表 select 1,'CCCC',20
insert into 产品表 select 1,'DDDD',21
insert into 产品表 select 1,'EEEE',22
insert into 产品表 select 1,'adsf',25
insert into 产品表 select 1,'fwed',28
insert into 产品表 select 2,'FFFF',15
insert into 产品表 select 2,'ffwe',25
go
select uname,pname from (
select row_number() over(partition by a.id order by b.pname)as rm,a.uname,b.pname from 用户表 a inner join 产品表 b on a.id=b.uid
)t where rm<6
go
drop table 用户表,产品表
/*
uname pname
---------- ----------
张三 AAAA
张三 adsf
张三 BBBB
张三 CCCC
张三 DDDD
李四 FFFF
李四 ffwe
(7 行受影响)*/
SELECT A.*,B.* FROM 用户表 A CROSS APPLY (SELECT TOP(5)* FROM 产品表 B WHERE A.ID=B.ID)B
--users表中假设有下面字段:userid,username,age,address
with userproducts
as
(
select row_number() over (order by users.userid) as rowid ,users.username,users.userid,users.age,users.address,products.* from users join products products on users.userid=products.userid
)
select top 5 * from userproducts