我的问题是:我需要仅使用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/

10-10 03:28