如文档中所述 The ENUM Type : 枚举是一个字符串对象,其值从表创建时列规范中显式枚举的允许值列表中选择。 列一次只能保存一个值。 为了存储多个值,可以使用单独的表:
-- Table A
id
1
-- Table B
post_id data
1 Hunt
1 Pioneer
-- Insert sample data
INSERT INTO A VALUES(1)
INSERT INTO B VALUES(1, 'Hunt'),(1, 'Pioneer')
-- Get all data for id 1
SELECT B.data FROM A
INNER JOIN B ON B.post_id = A.id
2条答案
按热度按时间5kgi1eie1#
在mysql文档中没有update语句的示例,但我通常使用两种方法来更新此类列:
使用文本值
使用数值
创建测试环境
备选方案1:使用文本值
由于集合是枚举元素的集合,任何枚举元素都可以被视为字符串,因此我们可以执行以下操作:
备选方案2:使用数值
任何集合元素在内部存储为64位数字,其中包含表示每个集合元素的位的组合。在我们的表格中:
'Hunt'=1, 'Pioneer'=2, 'Chevron'=4, 'BP'=8
.另外,mysql允许使用这些数字而不是文本值。如果我们需要在select中看到数值,我们需要在数值表达式中使用set列(例如,加零)。让我们看看当前值:
在这里
9 = 'Hunt' (1) + 'BP' (8)
以及2 = 'Pioneer' (2)
.现在,让我们换个房间
Pioneer
至'Hunt' (1) + 'Chevron' (4)
:kupeojn62#
如文档中所述
The ENUM Type
:枚举是一个字符串对象,其值从表创建时列规范中显式枚举的允许值列表中选择。
列一次只能保存一个值。
为了存储多个值,可以使用单独的表: