我有以下查询。
SELECT
A.*, B.QuantityOnHand, C.Brand, C.Category, C.Subcategory
FROM
item_info A
JOIN
inventory_status B ON A.ListID = B.ListID
LEFT JOIN
item_group C ON A.Parent_ListID = C.ListID
WHERE
(Conditions)
ORDER BY
Brand, Category, Subcategory, Name ASC
假设我有品牌A,B,G,X和Z.我想订购结果,以便品牌X是第一个,其次是其他品牌的升序。我还想保留由其他列引起的排序,即类别,子类别和名称。
完成的结果将是这样的。
X
A
B
G
Z
我该如何做到这一点?
答案 0 :(得分:2)
另一个选择
ORDER BY NullIf(Brand,'X'), Category, Subcategory, Name ASC
品牌X将是第一个,然后它将保留品牌的剩余订单
答案 1 :(得分:0)
我认为你必须手动添加一个case语句。
ORDER BY
CASE Day
WHEN 'X' THEN 1
ELSE 2
END
答案 2 :(得分:0)
你可以使用ORDER BY FIELD(column_name,values,.....)
SELECT
A.*
, B.QuantityOnHand
, C.Brand
, C.Category
, C.Subcategory
FROM item_info A
INNER JOIN inventory_status B ON A.ListID = B.ListID
LEFT JOIN item_group C ON A.Parent_ListID = C.ListID
WHERE (Conditions)
ORDER BY field(Brand, 'X', 'A','B','G','Z') , Category, Subcategory, Name ASC