我有一张有一大堆行的桌子。为简单起见,我们将说每一行属于类别 A、B、C 或 D。这些行还具有重要、不重要或无聊的值。我想排序,如果一个类别包含任何重要的值,那么该类别中的所有值都排在第一位,重要的行排在第一位。它看起来像:
A -重要
A -重要
A - 不重要
C -重要
C - 无聊
B - 无聊
B - 无聊
D - 不重要
D - 无聊
我有一张有一大堆行的桌子。为简单起见,我们将说每一行属于类别 A、B、C 或 D。这些行还具有重要、不重要或无聊的值。我想排序,如果一个类别包含任何重要的值,那么该类别中的所有值都排在第一位,重要的行排在第一位。它看起来像:
A -重要
A -重要
A - 不重要
C -重要
C - 无聊
B - 无聊
B - 无聊
D - 不重要
D - 无聊
SELECT my_table.* FROM my_table JOIN (
SELECT Category, SUM(Importance='Important') number_important
FROM my_table
GROUP BY Category
) t USING (Category) ORDER BY t.number_important DESC, Category, Importance
在sqlfiddle上查看。