【问题标题】:Order column by certain multiple criteria in mysql根据mysql中的某些多个条件对列进行排序
【发布时间】:2014-04-27 16:22:55
【问题描述】:

这个问题已部分回答,这就是为什么我需要在 HERE 中创建另一个问题。 我相信其他人会搜索类似的东西。

如果我有这样的表:

VEHICLES:

ID | Name | MainGroup | SubGroup   |  Price
1  |  A   |   Vehicle |   Truck    |   1399
2  |  B   |   Vehicle |   Car      |   200
3  |  C   |   Vehicle |   Car      |   1400
4  |  D   |   Vehicle |   Truck    |    50
5  |  E   |   Vehicle |   Truck    |    3200
6  |  F   |   Vehicle |   Motorbike|    79

如果我使用此代码:

SELECT *
FROM Vehicles
WHERE MainGroup=Vehicle
ORDER BY field(Subgroup, 'Car', 'Truck', 'Motorbike');

它只会由subgroup 订购,我也希望它由price 订购。 我试过了:

SELECT *
FROM Vehicles
WHERE MainGroup=Vehicle
ORDER BY field(Subgroup, 'Car', 'Truck', 'Motorbike'), Price ASC;

然后我的数据仅由Price 排序。

我希望能够得到这样的东西:

ID | Name | MainGroup | SubGroup   |  Price
2  |  B   |   Vehicle |   Car      |   200
3  |  C   |   Vehicle |   Car      |   1400
4  |  D   |   Vehicle |   Truck    |    50
1  |  A   |   Vehicle |   Truck    |   1399
5  |  E   |   Vehicle |   Truck    |   3200
6  |  F   |   Vehicle |   Motorbike|    79

为此使用 order by 的正确方法是什么?还是其他一些 MySQL 函数?

【问题讨论】:

标签: mysql sql group-by sql-order-by


【解决方案1】:

改变使用顺序:

SELECT *
FROM Vehicles
WHERE MainGroup=Vehicle
ORDER BY Price ASC, field(Subgroup, 'Car', 'Truck', 'Motorbike');

【讨论】:

  • 我也试过了,但它没有给我正确的结果。特别是当某些价格默认设置为 0 时。结果混在一起
猜你喜欢
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
相关资源
最近更新 更多