【发布时间】:2009-09-09 05:37:52
【问题描述】:
我有一个选择,我在其中进行“分组”。其中一列是枚举,我想为每个组选择最大值(即枚举中索引最大的那个)。我可以的
select MAX(enum_column+0) as enum_index
要获得组中最大的索引,但是如何将枚举索引转回枚举项?
示例: 假设我有一个包含三列的“士兵”表:
"id" - soldier's ID
"name" is the soldier's first name (a varchar field).
"rank" is the soldier's rank, and it is an enum:
{'private','sergent'...,'lieutenant' etc.}
现在假设我想为每个名字查找具有该名字的人的最高等级。 我能做到:
select MAX(rank+0) as enum_index,name from soldiers group by name
但这会给我枚举字段中最大元素的索引,而不是元素的名称。即它会给我:
1 | john
2 | bob
我想要的地方
'private' | john
'sergent' | bob
我怎样才能达到预期的效果?
【问题讨论】:
-
您错过了 rank 是如何变成字符串/varchar rank_name 值的数字。
-
我不确定我是否理解你,但如果你的意思是我没有解释从 string 到 int 的变化,那是因为它是 ENUM 类型...