如何在MySQL数据库中对ENUM列进行排序?

时间:2010-10-19 03:04:28

标签: sql mysql sorting enums

我在MySQL表中有color列,类型为ENUM('RED', 'YELLOW', 'MY_COLOR', 'BLACK'),另一个name列的类型为VARCHAR(30)

我想按以下顺序获取所有表格行:

    首先
  • YELLOW行,按name
  • 排序 最后
  • RED行,按name
  • 排序
  • 在中间,所有其他行,按name
  • 排序

这可以在1个查询中进行这种排序吗?

2 个答案:

答案 0 :(得分:26)

使用:

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

答案 1 :(得分:1)

这适用于mysql。但对于h2 DB,它会发生错误 引起:org.h2.jdbc.JdbcSQLException:按表达式排序“CASEWHEN((color ='YELLOW'),1,CASEWHEN((color ='RED'),3))”在这种情况下必须在结果列表中; SQL语句:

为避免错误,请在select子句中添加stmt“CASEWHEN((color ='YELLOW'),1,CASEWHEN((color ='RED'),3))”。