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

+0

のようなものを使用する必要があります。答えはこの[question]にあります。 com/q/3894789)。 – HamZa

+0

[複数の列を1つのALTER TABLEステートメントで削除する方法は?](http://stackoverflow.com/questions/6346120/how-do-i-drop-multiple-columns-with-a-single- alter-table-statement) – Veve

答えて

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

これは私が次に試したものです。ちょうどそれが他のクエリのために働くとき、他の構文がどのように動作しなかったかは奇妙であると考えました。ありがとう。 –

+0

@CoryNickerson Droppingはselect&replaceのような他の関数とは異なります。 –

+2

問題はありませんが、バックアップしておくことを忘れないでください:) – void

2

複数の列を削除するには、実際の構文は、MySQLの5.0.45で "列を削除" を指定する必要が列ごとにそう

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

です。これは上記の答えと同じです。ここにポイントを1つ追加するだけです。テーブルを変更すると、ディスク上の実際のスペースが解放されません。したがって、最適化テーブルを実行した後で最適化テーブルを実行します。

+1

単語「列」はオプションです。 –

関連する問題