运行查询,以便包含“重要”的任何类别中的所有值都排在第一位

时间:2013-07-23 21:17:44

标签: mysql

我有一堆包含大量行的表。为简单起见,我们会说每行属于A,B,C或D类。这些行也包含重要值,不重要或无聊值。我想排序,如果一个类别包含任何重要的值,那么该类别中的所有值都是第一位的,首先是重要的行。它看起来像是:

A - 重要

A - 重要

A - 不重要

C - 重要

C - 无聊

B - 无聊

B - 无聊

D - 不重要

D - 无聊

1 个答案:

答案 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上查看。