2010-10-19 99 views
14

我有color列的MySQL表中,其類型是ENUM('RED', 'YELLOW', 'MY_COLOR', 'BLACK'),另一個name列的類型是VARCHAR(30)如何對MySQL數據庫中的ENUM列進行排序?

我想獲得的所有錶行按照下面的順序:第一

  • YELLOW行,由name排序最後
  • RED行,由name
  • 在中間排序,所有其他行,按排序name

是否有可能在1查詢中進行這種排序?

回答

26

用途:

ORDER BY CASE color 
      WHEN 'YELLOW' THEN 1 
      WHEN 'RED' THEN 3 
      ELSE 2 
     END, name 
+0

非常感謝! – 2010-10-19 04:07:31

1

這工作得很好與MySQL。但是對於h2數據庫,它會顯示一個錯誤 引起的:org.h2.jdbc.JdbcSQLException:按表達式排序「CASEWHEN((color ='YELLOW'),1,CASEWHEN((color ='RED'),3))」在這種情況下必須在結果列表中; SQL語句:

爲避免出現錯誤,請在select子句中添加stmt「CASEWHEN((color ='YELLOW'),1,CASEWHEN((color ='RED'),3))」。

相關問題