我必须从包含
之类的表中获取ShopId ArticleId Price ArticleName
1 1a 2.00 Fahrrad
1 1b 3.00 Fahrrad
1 1c 4.00 Fahrrad
1 1d 9.99 Fahrrad
2 2a 2.00 Fahrrad
2 2b 3.10 Fahrrad
2 2c 3.50 Fahrrad
2 2d 9.99 Fahrrad
最大。 3 ArticleId每个ShopId由min命令。结果价格,例如:
ShopId ArticleId Price ArticleName
1 1a 2.00 Fahrrad
1 1b 3.00 Fahrrad
1 1c 4.00 Fahrrad
2 2a 2.00 Fahrrad
2 2b 3.10 Fahrrad
2 2c 3.50 Fahrrad
有人可以帮忙吗?
所以它类似于min(Price
)和group by ShopId
,但有3个结果不是1。
答案 0 :(得分:0)
给这个打击。不知道你的桌子的名字,所以我称之为shopArticle
:
select t.ShopId,t.ArticleId,t.Price,t.ArticleName
from
(
select sa.*,
CASE sa.ShopId
WHEN @curShopId
THEN @curRow := @curRow + 1
ELSE @curRow := 1 AND @curShopId := sa.ShopId END rank
from shopArticle sa
join (SELECT @curRow := 0, @curShopId := '') r
order by sa.ShopId,sa.Price asc
) t
where t.rank <=3;
答案 1 :(得分:0)
使用真实的列名称,结果为简短形式: 设置@cr:= 0,@ cs:=“”;
选择s
。ShopTitle
,p
。*,
@cr:= if(@cs = p
。ShopId
,@ cr + 1,1)为cr
,
@cs:= p
。ShopId
为cs
来自affili_products2
p
强制索引(PRIMARY)
在affili_shops
s
= p
。ShopId
s
ShopId
其中p
。Keywords
喜欢“%hobby%”
按p
分组。ShopId
,p
。Price
cr <= 3
按s
订购。ShopTitle
asc,p
。Price
asc