mysql - 如何从索引中获取枚举元素

标签 mysql sql enums indexing

我有一个选择,我在其中执行“分组依据”。其中一列是一个枚举,我想为每个组选择最大值(即枚举中索引最大的那个)。我能做到

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/

相关文章:

MySQL Workbench 不接受 JSON 文件(错误 1290)

MySQL 左外连接和 {?}

php - 更新查询不工作 PHP MySQL

python - MySQL 选择产品的所有组件

MySQL - 按唯一登录天数范围内的用户数和部门分组

java - 常量特定类主体的非泛型 getClass() 方法是通过设计还是对 Java 的监督?

javascript - 根据 SQL 值更改 css

php - MySQL 连接两个表,其中来自 PHP 变量的 WHERE 语句已经存在

c# - 枚举的变量总是被初始化?

enums - 如何告诉编译器我返回的枚举的变体总是没有生命周期?