Mysql 如何在公共列元素的基础上排序
我有一个产品表,其中有“销售”、“名称”和“销售id”列,我想根据销售数量对产品进行排列,然后如果它们具有相似的销售id,则对它们进行分组,这将确保最畅销的产品与具有相同销售id的其他产品一起出现在顶部Mysql 如何在公共列元素的基础上排序,mysql,sql,sql-order-by,window-functions,Mysql,Sql,Sql Order By,Window Functions,我有一个产品表,其中有“销售”、“名称”和“销售id”列,我想根据销售数量对产品进行排列,然后如果它们具有相似的销售id,则对它们进行分组,这将确保最畅销的产品与具有相同销售id的其他产品一起出现在顶部 sold | mer_id | name ------------------------ 6 | 7 | iphone 3 | 2 | ipad 1 | 7 | macbook air 5 | 3 | mackbook pro 6 |
sold | mer_id | name
------------------------
6 | 7 | iphone
3 | 2 | ipad
1 | 7 | macbook air
5 | 3 | mackbook pro
6 | 2 | iwatch
我想要的结果是:
sold | mer_id | name
------------------------
6 | 7 | iphone
1 | 7 | mackbook air
6 | 2 | iwatch
3 | 2 | ipad
5 | 3 | mackbook pro
我不知道该怎么做
我想首先显示销售数量最多的商品的商户id
如果您运行的是MySQL 8.0,则可以使用窗口函数:
select *
from mytable
order by sum(sold) over(partition by mer_id) desc, sold desc
在早期版本中,可以使用相关子查询:
select t.*
from mytable t
order by
(select sum(t1.sold) from mytable t1 where t1.mer_id = t.mer_id) desc,
sold desc
因此,一个简单的
订单按mer_id,salled DESC
?先生,我想首先显示销售数量最多的商品的商户id这是抛出语法错误,该错误出现在“over(partition BY meru id)DESC,salled DESC”@aryanagarwal:您运行的MySQL版本早于8.0。查看我的更新答案。这产生了不正确的输出。所有内容都是在订单后混合的。按销售我希望具有相同商户id的产品一起使用这种方式我将具有最高销售产品数量的商户id,其其他产品位于顶部,以类似的方式,其他行将跟进当sum替换为max时,我将获得所需的结果,非常感谢。