2013-05-28 66 views
1

通過用組定製次序當我Mysql的通過

SELECT * FROM table_A WHERE id = 2321 order by color asc, color = 49, color = 2; 

這將返回所有這些顏色= 2,則顏色= 49,那麼所有其他顏色。

但我的結果只需要組,然後我

SELECT * FROM table_A WHERE id = 2321 GROUP BY color ORDER BY color asc, color = 49, color = 2; 

它會通過結果返回組,但有不顧秩序

我的問題是如何回報顏色從2開始,然後49,然後其他和組'顏色'?

回答

2

GROUP BY在這裏不需要。所有你需要的是使用FIELD()

ORDER BY FIELD(color, 49, 2) DESC 

這將Color = 2第一列表進行排序,然後49然後其他顏色。

+0

如果這不起作用,請與您的期望的結果添加一些記錄, –

+0

這將輸出所有項目的顏色= 2和後續的,但我需要組「顏色」 – Peter

+0

順便說一句,如果我在你的答案中包含GROUP BY,那麼它的工作原理!所以我會接受你的回答 – Peter

0

如果你關心顏色的其餘部分的順序,你可以使用CASE

SELECT color 
    FROM table_A 
WHERE id = 2321 
GROUP BY color 
ORDER BY CASE color 
      WHEN 2 THEN 1 
      WHEN 49 THEN 2 
      ELSE color + 50 
      END 

這將排序2第一,49秒,然後其他顏色下令ASC。 這是假設顏色總是正面int

SQLFiddle