SQL - 按前面特定值的列排序
SQL - Order by column with specific value in front
我有以下查询。
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
我怎样才能做到这一点?
另一种选择
ORDER BY NullIf(Brand,'X'), Category, Subcategory, Name ASC
品牌 X 将排在第一位,然后它将保留品牌的剩余顺序
我认为您必须使用 case 语句手动添加它们。
ORDER BY
CASE Day
WHEN 'X' THEN 1
ELSE 2
END
您可以使用 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
我有以下查询。
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
我怎样才能做到这一点?
另一种选择
ORDER BY NullIf(Brand,'X'), Category, Subcategory, Name ASC
品牌 X 将排在第一位,然后它将保留品牌的剩余顺序
我认为您必须使用 case 语句手动添加它们。
ORDER BY
CASE Day
WHEN 'X' THEN 1
ELSE 2
END
您可以使用 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