MySQL删除多列

53

我正在尝试删除多列,但遇到了一些问题。当我在括号()中使用多个值时,以下语法在我使用ALTER TABLEADD时有效,但在DROP COLUMN时无效。我是否使用了错误的语法?

    $table3 = "
        ALTER TABLE $table3_name
        DROP COLUMN (
            user_firstname,
            user_lastname,
            user_address,
            user_address2,
            user_city,
            user_state,
            user_zip,
            user_phone
        );
    ";

1
文档中没有这样的语法,您必须使用类似 ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d; 的语句。 - MatRt
看起来答案就在这个问题中。 - HamZa
2个回答

102
ALTER TABLE `tablename`
DROP `column1`,
DROP `column2`,
DROP `column3`;

这是我接下来尝试的方法,它起作用了。只是觉得奇怪的是,其他语法在其他查询中可以工作,但在这里却不行。谢谢。 - Cory Nickerson
@CoryNickerson,删除与其他函数(例如选择和替换)不同。 - Daryl Gill
2
没问题,不过别忘了备份 :) - void
在这个答案中可以找到更简洁的方法:https://dev59.com/QGw15IYBdhLWcg3w3vpe - thdoan
@10basetom 在你提供的答案中,MySQL 的语法与此相同。更简洁的形式不是 MySQL 的。 - cesoid

4
为了删除多个列,实际语法如下:

alter table tablename drop column col1, drop column col2 , drop column col3 ....

对于每一列,您需要在Mysql 5.0.45中指定“删除列”。这与上面的答案相同。只是在这里添加一个要点。修改表不会释放磁盘上的实际空间。因此,在运行optimize table之后运行optimize table。


2
“column”这个词是可选的。 - Yzmir Ramirez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接