我在MySQL表中有color
列,类型为ENUM('RED', 'YELLOW', 'MY_COLOR', 'BLACK')
,另一个name
列的类型为VARCHAR(30)
。
我想按以下顺序获取所有表格行:
YELLOW
行,按name
RED
行,按name
name
这可以在1个查询中进行这种排序吗?
答案 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))”。