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

时间:2014-01-25 18:27:59

标签: mysql sql select enums enumeration

我有一个MySQL数据库和一个包含列的表table1

  • id uint 类型
  • 其他一些现在不重要的字段(例如nameage等),
  • status 枚举类型(met, like, love, hate, kill)

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

我的尝试:

我试过了:

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

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

当然:

SELECT status FROM table1 WHERE id = 1

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

问题:

有没有办法实现它(可能是某种“铸造”)?

我认为解决方案不要乱用数据库架构表

此外,我可以UPDATEstatus = status + 1,而不是选择UPDATE再次status = status - 1,但更糟糕的是......

修改

我被要求提供更多细节: 我没有任何附加表来保存我的枚举顺序。我刚刚用phpMyAdmin添加了它,并且它的选择按照我的描述工作。 此外,当我使用status = status + 1更新表格时,我会从hate获取love

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这样的东西?

SELECT * FROM test 
WHERE status+0=(SELECT (status + 0)+1 FROM test   WHERE id = 1)

SQL Fiddle

这是下一个状态

SELECT (status + 0)+1 FROM test WHERE id = 1