2013-04-04 61 views
34

我试图删除多列,但有一些麻烦。当我做ALTER TABLEADD与括号()中的多个值但它不适用于DROP COLUMN下面的语法工作。我使用错误的语法吗?MySQL删除多列

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

在文档中没有这样的语法,你必须使用类似'ALTER TABLE t2 DROP COLUMN c,DROP COLUMN d;' – MatRt 2013-04-04 23:34:13

+0

这似乎是答案在这个[问题](http:// stackoverflow。 COM/q/3894789)。 – HamZa 2013-04-04 23:39:56

+0

可能的重复[如何使用单个ALTER TABLE语句删除多个列?](http://stackoverflow.com/questions/6346120/how-do-i-drop-multiple-columns-with-a-single- alter-table-statement) – Veve 2017-02-02 23:33:38

回答

67
ALTER TABLE `tablename` 
DROP `column1`, 
DROP `column2`, 
DROP `column3`; 
+0

这是我接下来尝试的,它的工作原理。当其他语法适用于其他查询时,其他语法无法正常工作的原因很奇怪。谢谢。 – 2013-04-04 23:34:23

+0

@CoryNickerson删除不同于其他功能,如选择和替换例如 – 2013-04-04 23:35:01

+2

没问题,不要忘了备份,但:) :) – void 2013-04-04 23:35:35

2

要删除多个列的实际语法

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

因此,对于每一个你需要指定在MySQL 5.0.45 “删除列” 一栏。这与上述答案相同。这里只加一点。改变表格不会释放磁盘上的实际空间。因此运行优化表后运行优化表。

+1

“列”一词是可选的。 – 2018-01-12 01:29:58