[英]MySQL First GROUP BY, then ORDER
我一直在搜寻,但无法提出适当的解决方案来对我的表“商店”进行排序。
它是这样的:
Product Price
---------------------------------
Site 1 35
Site 2 50
Site 3 15
Site 1 30
Site 2 5
现在我需要它看起来像这样:
Product Price
---------------------------------
Site 2 50
Site 2 5
Site 1 35
Site 1 30
Site 3 15
该表格应从最高价格开始排序,然后按产品分组。 我尝试了一百万个不同的查询,而最接近的查询是:
SELECT m.* FROM shop m
INNER JOIN
(SELECT product, MAX(price) AS maxprice FROM shop GROUP BY product ORDER BY maxprice ASC) s
ON m.product = s.product
ORDER BY s.maxprice DESC
该查询可以完成工作,但会以错误的方式对组中的价格进行排序。
Product Price
---------------------------------
Site 2 5
Site 2 50
Site 1 30
Site 1 35
Site 3 15
我究竟做错了什么? 非常感谢帮助!
最好,谢谢一百万!
Select x.product, x.price from
(Select product, max(price) as mprice from shop
group by product) as tbl inner join shop x on tbl.product = x.product
order by tbl.mprice desc, x.Price desc
我还注意到您创建的小提琴会节省我一些时间,但这是更新小提琴
SELECT s.product, s.Price
from (Select product, max(price) as mprice
from shop group by product) as tbl
inner join shop s on s.product = tbl.product
order by tbl.mprice desc, s.price desc
您有两种排序方式,因此您需要在ORDER BY中对两者进行描述
ORDER BY s.maxprice DESC, m.price DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.