我有一个MySQL数据库和带有列的表table1
:
uint类型的id
其他一些不重要的字段(例如name
,age
等),
枚举类型为status
的(met, like, love, hate, kill)
。
对于插入的行(1, love)
,我要选择“下一个” status
(hate
)。
我的尝试:
我试过了:
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