我有color
列的MySQL表中,其类型是ENUM('RED', 'YELLOW', 'MY_COLOR', 'BLACK')
,另一个name
列的类型是VARCHAR(30)
。如何对MySQL数据库中的ENUM列进行排序?
我想获得的所有表行按照下面的顺序:第一
YELLOW
行,由name
排序最后RED
行,由name
- 在中间排序,所有其他行,按排序
name
是否有可能在1查询中进行这种排序?
我有color
列的MySQL表中,其类型是ENUM('RED', 'YELLOW', 'MY_COLOR', 'BLACK')
,另一个name
列的类型是VARCHAR(30)
。如何对MySQL数据库中的ENUM列进行排序?
我想获得的所有表行按照下面的顺序:第一
YELLOW
行,由name
排序最后RED
行,由name
name
是否有可能在1查询中进行这种排序?
用途:
ORDER BY CASE color
WHEN 'YELLOW' THEN 1
WHEN 'RED' THEN 3
ELSE 2
END, name
这工作得很好与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))”。
非常感谢! – 2010-10-19 04:07:31