使用ORDER BY的MySQL GROUP BY使用特定的单词

时间:2013-12-08 13:25:07

标签: mysql group-by sql-order-by

如果在该ID上有多个状态时,我在如何获取就绪状态方面遇到了麻烦。

我的数据库:

  ProjID   |  Status
    1         Ready
    2         Done
    1         Ongoing
    3         Done
    2         Ongoing
    1         Done

预期产出:

  ProjID   |  Status
    1         Ready
    2         Ongoing
    3         Done

当存在Ready状态时,ProjID Ready应该出现,但是当没有就绪状态时会出现持续状态,但是当没有正在进行状态时,将出现Done状态...订单已准备就绪,正在进行,已完成< / p>

我试过这个

SELECT DISTINCT (projectID),Status FROM projStatus 
GROUP BY projectID 
ORDER BY FIELD(Status, 'Ready','Ongoing','Done' )

2 个答案:

答案 0 :(得分:0)

此查询提供预期输出:

SELECT  projectID, max( Status ) Status
FROM projStatus 
GROUP BY projectID

演示 - &gt; http://www.sqlfiddle.com/#!2/cdc1d8/4

答案 1 :(得分:0)

根据我的评论,这里是嵌套查询:

SELECT projectID, Status
FROM (
  SELECT DISTINCT (projectID),Status 
  FROM projStatus 
  GROUP BY projectID 
) AS t
ORDER BY CASE Status
           WHEN 'Ready' THEN 1
           WHEN 'Ongoing' THEN 2
           WHEN 'Done' THEN 3
         END