我有一堆包含大量行的表。为简单起见,我们会说每行属于A,B,C或D类。这些行也包含重要值,不重要或无聊值。我想排序,如果一个类别包含任何重要的值,那么该类别中的所有值都是第一位的,首先是重要的行。它看起来像是:
A - 重要
A - 重要
A - 不重要
C - 重要
C - 无聊
B - 无聊
B - 无聊
D - 不重要
D - 无聊
答案 0 :(得分:2)
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上查看。