现有公司表:
现有产品表:
要得到以下结果:
sql语句如下:
方法一:
select a.Id 公司ID,a.CName 公司名称,t.Id 产品ID,t.PName 产品名称 from(select *,ROW_NUMBER() over(partition by CId order by Id ) n from T_Product) t right join T_Company a on t.CId=a.Id and t.n<3;
方法二:
select a.Id 公司ID,a.CName 公司名称,t.Id 产品ID,t.PName 产品名称 from(select *,ROW_NUMBER() over(partition by CId order by Id ) n from T_Product) t right join T_Company a on t.CId=a.Id where t.n<3 or t.n is null;
所需知识补充:
row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)