基于tinyint列的值提取MySql枚举值

基于tinyint列的值提取MySql枚举值,mysql,Mysql,我有一个表,它有一个tinyint和enum列 枚举列thing_status_text保存tinyintthing_status中值的文本表示形式 我想执行类似以下psuedo代码的操作: SELECT thing_id, thing_status, thing_status_texts[thing_status] AS thing_status_text 因此,如果thing_status_文本为空、满、已删除,且thing_status=1,则thing_status_

我有一个表,它有一个tinyint和enum列

枚举列thing_status_text保存tinyintthing_status中值的文本表示形式

我想执行类似以下psuedo代码的操作:

SELECT
   thing_id,
   thing_status,
   thing_status_texts[thing_status] AS thing_status_text

因此,如果thing_status_文本为空、满、已删除,且thing_status=1,则thing_status_文本将为“满”

根据您的注释,您希望使用单独的表来存储您的状态。大概是这样的:

 status_table                 
+-----------------------------+
|id           |status         |
+-------------+---------------+
|1            |Empty          |
+-------------+---------------+
|2            |Full           |
+-------------+---------------+
|3            |Removed        |
+-------------+---------------+
然后在另一个表中,thing_status应该与新表中的id列相对应。当您选择它时,您可以使用JOIN


枚举字段通常不是这样使用的。您的枚举值应该已经满了,您只需选择它。好的,我认为您是对的。我刚刚了解了ENUM,在阅读了更多内容后,我意识到这并不是我所想的。你确定这不是你所想的吗?枚举为您发挥了所有的魔力,但只有一列。如果您有一个枚举“空”、“满”、“已删除”,您可以将其插入/更新为“满”或“2”,当您从中选择时,您将返回值“满”——或者如果您选择enum_column+0,您将再次返回“2”。是的,就是这样。我需要ENUM作为一种非编程方式来获取thing_status的字符串值。我认为它被看作是可以阅读的单个单位。但是,正如您所说,像2这样的值必须放在列中。而且,据我所知,如果我想得到thing_status的原始值,我需要两列;一个小罐和一个枚举。这也意味着当数据更新时,我必须更新这两列。这听起来对吗?
SELECT status FROM your_main_table JOIN status_table ON thing_status=id