根据你的描述我大概揣摩了一下你的意思,这是SQL Server的中的写法
select * from (select row=row_number() over(partition by item_type_id ORDER BY item_type_id ),* from item) as t where row<=4
我研究一下,上面的SQL Server怎样转换为mysql吧,SQL Server不是太了解,还是感谢...
看了一下这个SQL的含义,你刷选出来的应该是每个商品分类中商品的数量小于或等于4的商品分类的商品列表
我的需求是:
刷选出符合要求的商品分类的商品列表,每个商品分类中最多4个商品
不知道,我上述对SQL Server伪代码的理解是否正确?
@Mr_伍先生: 这跟数量有什么关系,这row列是你分组(partition by 分组名)之后,根据你给定的列名排序(order by 排序名称),然后会给所有的数据分组之后的排名,然后取排名在前4的数据
@Mr_伍先生:
CREATE table #tnp(
Sheng nvarchar(10),
Shi nvarchar(10)
)
insert into #tnp
select N'河北',N'石家庄' union all
select N'河北',N'唐山' union all
select N'河北',N'秦皇岛' union all
select N'山西',N'太原' union all
select N'山西',N'大同'
select * from (select *,xh=row_number() over(partition by Sheng order by Shi desc ) from #tnp) as #tt where xh in(1,2)
这个例子你看看有没有什么帮助
描述清楚一点吧