【问题标题】:Order column by certain criteria in mysql在mysql中按某些条件排序列
【发布时间】:2014-04-27 15:27:29
【问题描述】:

我需要能够使用MySQL 以正确的方式对我的输出数据进行排序。 到目前为止,我使用的是ORDER BY,到目前为止一切正常。

假设我有这样的事情: 表VEHICLES

ID | Name | MainGroup | SubGroup 
1  |  A   |   Vehicle |   Truck
2  |  B   |   Vehicle |   Car
3  |  C   |   Vehicle |   Car
4  |  D   |   Vehicle |   Truck
5  |  E   |   Vehicle |   Truck
6  |  F   |   Vehicle |   Motorbike

我正在使用这个:

SELECT * FROM Vehicles WHERE MainGroup=Vehicle ORDER BY Subgroup;

当我得到选择时,它们并没有按照我想要的方式排序,因为现在我希望能够确定所选择的方式。假设我想要这样的输出 Car, Truck, Motorbike 或其他方式。如何做到这一点? 使用order by 是否可行?

【问题讨论】:

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


    【解决方案1】:

    使用field():

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

    【讨论】:

    • 一个sql查询可以有多个字段吗?
    • @user123_456 。 . .我认为答案是“是”,但我不确定你的意思。 field() 只是一个 MySQL 函数,记录在这里:dev.mysql.com/doc/refman/5.7/en/….
    • 我遇到的问题是我需要为每个子组再应用一个 order by。例如,我还有一列(价格),当我做这样的事情时,我得到了错误的结果。 SELECT * FROM Vehicles WHERE MainGroup=Vehicle ORDER BY field(Subgroup, 'Car', 'Truck', 'Motorbike'), Price ASC;
    • @user123_456 。 . .这和你问的问题不同。您的查询将首先按子组分组,然后按价格分组。如果这不是您想要的,那么它不是正确的查询。
    • 你也可以查看我的链接问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 2019-09-19
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多