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


uint类型的id
其他一些不重要的字段(例如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(文本值,而不是索引)。

题:

有没有办法做到这一点(也许是某种“铸造”)?

我提供了不会与数据库架构表混淆的解决方案。

另外,我可以用UPDATE status = status + 1该行,而不是选择它,然后用UPDATE再次选择它,但这是更糟糕的主意...

编辑

有人要求我提供更多详细信息:
我没有任何其他表格可用于枚举。我只是用status = status - 1添加了它,并且从中选择的内容与我描述的一样。
此外,当我用phpMyAdmin更新表时,我从status = status + 1获取hate

最佳答案

像这样吗

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

10-04 16:38
查看更多