mysql - 带有二级子排序的 OrderBy
问题描述
我有一个查询,我需要构建一个按匹配优先级对项目进行排序的查询;但是,当我有重复产品的情况下,我希望它在初始匹配时以最高优先级分组。不确定这在 MySQL 中是否可行,或者我是否需要在 PHP 或 JS 中发布处理。
+-------+----------+---------+
| order_id | Priority | Product |
+-------+----------+---------+
| 12345 | 1 | 334455 |
| 12345 | 1 | 212121 |
| 12355 | 2 | 666666 |
| 12356 | 3 | 212121 |
| 12360 | 4 | 777777 |
+-------+----------+---------+
我尝试过的,当然失败了。我尝试使用“FIELD()”并做同样的事情。
SELECT Order_id, Priority, Product FROM Products ORDER BY Priority ASC, Product
期望的结果
+-------+----------+---------+
| Order_id | Priority | Product |
+-------+----------+---------+
| 12345 | 1 | 334455 |
| 12345 | 1 | 212121 |
| 12356 | 3 | 212121 |
| 12355 | 2 | 666666 |
| 12360 | 4 | 777777 |
+-------+----------+---------+
解决方案
这样的事情应该可以解决问题:
select order_id, Priority, Product,
(select min(Priority) from Products p1 where p.product = p1.product) as MinPrior
from Products p
order by MinPrior asc, Product asc, Priority asc;
我知道,它与“期望的结果”中的不完全相同,但如果我正确理解了问题,它就会完成任务所需的工作。
我希望,我能帮上忙。
推荐阅读
- python - 如何使用python从熊猫数据框中将电子邮件发送到具有不同主题的不同收件人地址
- flutter - 带有 JSON 正文的 Flutter 推送通知
- python - 如何从 statsmodel 中的滚动回归模块进行预测?
- python-3.x - “fit() 缺少 1 个必需的位置参数:'y'”错误
- python - 使用 Python 在网站上抓取和绘制连接页面的最佳方法是什么?
- python - Django python如何在模型中获取多个图像
- javascript - angularJS 数组元素显示为未定义
- php - 这个ereg代码怎么可能更新为preg_match?
- python-3.x - 我们可以在序列化程序类本身中强制使用任何一个序列化程序字段吗?
- reactjs - 无法在反应选择组中做出改变