【问题标题】:How can I remove a value from an enum in mysql?如何从mysql中的枚举中删除一个值?
【发布时间】:2013-05-30 07:01:47
【问题描述】:

我有一个带有ENUM 的表,其中包含3 个值:onetwothree。 该表已经包含数据,但是ENUMvalue two 目前没有使用,所以我想从ENUM 中删除它。结果将是一个只有两个值的ENUMonethree

我可以使用ALTER TABLE 声明并说:

ALTER TABLE 'tablename' CHANGE 'enumname' ENUM('one', 'three');

【问题讨论】:

  • 你的尝试没问题,但需要做些小改动,试试答案。

标签: mysql database enums


【解决方案1】:

试试这个:-

alter table tablename
change `columname`  `columname` enum ('one', 'three');

它工作正常。

【讨论】:

    【解决方案2】:

    枚举被保存为整数,所以所有带有enum="one" 的行实际上都等于1enum="two"2enum="tree"3

    如果枚举名称匹配,似乎 MySQL 正在尽一切努力更改这些值,因此您只需要确保没有包含“两个”的行

    http://sqlfiddle.com/#!2/ef76d/1

    CREATE TABLE `tablename` (`name` VARCHAR(32), `enumname` ENUM('one', 'two', 'three'));
    INSERT INTO `tablename` VALUES ('one', 'one'),('two', 'two'),('three', 'three');
    DELETE FROM `tablename` WHERE `enumname`=2;
    ALTER TABLE `tablename` MODIFY `enumname` ENUM('one', 'three');
    

    【讨论】:

      【解决方案3】:

      是的,您可以这样做。这是一个例子:

      ALTER TABLE `database`.`tablename`
      CHANGE `enumname` `enumname` ENUM('one','two')
      CHARSET utf8 COLLATE utf8_general_ci NULL;
      

      【讨论】:

        【解决方案4】:

        是的,你可以。在您的测试环境中尝试一下,因为大表可能需要一段时间?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-29
          • 1970-01-01
          • 1970-01-01
          • 2014-11-06
          • 1970-01-01
          • 1970-01-01
          • 2019-08-17
          • 2021-04-08
          相关资源
          最近更新 更多