我的问题是:我需要仅使用SQL在MySQL上启用/禁用set type列的特定项,而又不会丢失以前的数据。
伪示例:
UPDATE `table`
SET `setlist` = TOGGLE_SET(`setlist`, 'option_a`, true)
WHERE `id` = 1
LIMIT 1
观察:TOGGLE_SET(列数据,字符串选项,布尔模式)是伪造的方法,不存在,仅用于理解。
创建示例:
CREATE TABLE `table` (
`id` INT(10) UNSIGNED NULL AUTO_INCREMENT,
`setlist` SET('option_a', 'option_b') NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB;
插入示例:
INSERT INTO `table` (`id`, `setlist`) VALUES (1, 'option_b');
类似的更新示例:
UPDATE `table`
SET `setlist` = 'option_a,option_b'
WHERE `id` = 1
LIMIT 1
这就是全部!
最佳答案
set setlist=if(setlist is null, 'option_a', concat(setlist,',option_a'));
ps-列
id
是唯一的,limit 1
是多余的关于mysql - 仅更新设置类型列上的一个可设置项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6945566/