mysql - 获取 MySQL 中下一个枚举字段值的名称

标签 mysql sql select enums enumeration

我有一个 MySQL 数据库和一个表 table1,其中包含以下列:

  • iduint 类型
  • 一些其他现在不重要的字段(例如姓名年龄等),
  • status enum 类型(遇见、喜欢、爱、恨、杀)

对于插入的行(1, love),我想选择“下一个”status (hate)。

我的尝试:

我尝试过:

SELECT (status + 1) FROM table1 WHERE id = 1

但它返回了4(索引,而不是文本值)。

当然:

SELECT status FROM table1 WHERE id = 1

返回love(文本值,而不是索引)。

问题:

有没有办法实现它(也许是某种“类型转换”)?

我更喜欢不要弄乱数据库架构表的解决方案。

此外,我可以使用 status = status + 1UPDATE 该行,然后选择它,然后使用 再次UPDATE status = status - 1,但这是更糟糕的想法......

编辑

由于我被要求提供更多详细信息: 我没有任何额外的表来保存我的枚举的顺序。我刚刚使用 phpMyAdmin 添加了它,并且从中进行的选择正如我所描述的那样。 此外,当我用 status = status + 1 更新表格时,我从 love 得到了 hate

最佳答案

这并不像您想象的那么容易。您如何管理枚举的顺序?通过身份证?通过订购栏?至少你必须使用子查询或类似的东西。您能给我们一些更详细的信息吗?

关于mysql - 获取 MySQL 中下一个枚举字段值的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21354509/

相关文章:

sql - 通用集合返回函数

mysql - 选择列 MYSQL 中的所有不同单词

php - SQL 错误 1064 不确定

java - 类型不匹配 : cannot convert from element type Object to String JDBC MetaData

sql - 使用 ORDER BY NEWID() 生成随机测试数据,包括重复的行

mysql - SQL Select Query with single field as formatted and remaining fields as wildcard

SQL从exec存储过程中选择SUM(列)?

Mysql st_intersects + st_buffer 不起作用

mysql - 对具有 3 亿行和每秒 50-100 个查询的 MySQL innoDB 表的查询随机减慢

java - 使用 Java 从 MySQL 表中获取行数