Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在公共列元素的基础上排序_Mysql_Sql_Sql Order By_Window Functions - Fatal编程技术网

Mysql 如何在公共列元素的基础上排序

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 |

我有一个产品表,其中有“销售”、“名称”和“销售id”列,我想根据销售数量对产品进行排列,然后如果它们具有相似的销售id,则对它们进行分组,这将确保最畅销的产品与具有相同销售id的其他产品一起出现在顶部

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时,我将获得所需的结果,非常感谢。