我有一个选择,我在其中执行“分组依据”。其中一列是一个枚举,我想为每个组选择最大值(即枚举中索引最大的那个)。我能做到
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
我怎样才能达到预期的效果?
最佳答案
运行以下
CREATE TABLE ranks
SELECT DISTINCT rank+0 as id, CONCAT('',rank) as rank
FROM soldiers
然后将数据与士兵表连接起来。请注意,它只会为您提供实际使用的等级。
关于mysql - 如何从索引中获取枚举元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1397723/