2013-04-04 70 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