如何更新MySQL SET类型的成员?

Rid*_*ari 11 mysql database database-design

我有一个值表,其中一列是SET类型.

如果它当前有成员('a','b','c','d'),如何在可能的值中添加"e"?

我意识到使用SET类型有点奇怪,我不清楚为什么会使用它而不是外键到另一个表的值集合,但我没有设计有问题的数据库,并且可以不要那么改变.

谢谢你的帮助!

更新:我想更新所有行的SET类型,而不只是一个,如果有帮助的话.

nor*_*ole 9

要向现有SET添加元素,请使用CONCAT()函数将新元素添加到逗号分隔列表中.要使用十进制值,我们可以使用按位OR运算符|.

  UPDATE set_test SET myset = CONCAT(myset,",Travel")
      WHERE rowid = 3;
Run Code Online (Sandbox Code Playgroud)

要么

  UPDATE set_test SET myset = myset | 1 WHERE rowid = 3;
Run Code Online (Sandbox Code Playgroud)

您还可以使用CONCAT_WS()函数,它为我们处理列表分隔符:

  UPDATE set_test SET myset = CONCAT_WS(',',myset,'Dancing')
      WHERE rowid = 6;
Run Code Online (Sandbox Code Playgroud)


Mar*_*c B 7

您想要将"e"添加到该设置字段中的允许值,或者它已经存在,并且您想要将"e"添加到该表中设置字段的当前值?

如果它不是一个允许的值,那么你将不得不做一个ALTER TABLE并重新定义字段:

 ALTER TABLE set_test CHANGE myset myset SET('a','b','c','d','e');
Run Code Online (Sandbox Code Playgroud)

(是的,'myset'被放在那里两次,这是一个"当前名称新名称"的东西.)

否则只需执行UPDATE TABLE,并将字段与'e'连接,如前面的答案所示.