2013-07-09 11 views
229

テーブルに複数の列を追加する必要がありますが、列の後にはlastnameという列を配置する必要があります。alter table add複数の列の後に1列目

私はこれを試してみました:

ALTER TABLE `users` ADD COLUMN 
(
    `count` smallint(6) NOT NULL, 
    `log` varchar(12) NOT NULL, 
    `status` int(10) unsigned NOT NULL 
) 
AFTER `lastname`; 

は、私はこのエラーを取得する:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AFTER lastname ' at line 7

は、どのように私はこのようなクエリでAFTER使用することができますか?

+2

あなたはどのような方言を話していますか? mysqlのように見えます。しかし、 'ALTER TABLE'構文は方言間で少し異なります。 –

+2

申し訳ありません、はいmysql。 – Koala

+0

可能な複製[MySQLの変更テーブル]フィールドが既に存在するフィールドの前後に追加](http://stackoverflow.com/questions/3379454/mysql-alter-table-add-field-before-or-after-a-field -ready-present) –

答えて

471

この

ALTER TABLE users 
ADD COLUMN `count` SMALLINT(6) NOT NULL AFTER `lastname`, 
ADD COLUMN `log` VARCHAR(12) NOT NULL AFTER `count`, 
ADD COLUMN `status` INT(10) UNSIGNED NOT NULL AFTER `log`; 

チェックをしてみsyntax

1

テーブル内の列の並べ替えを気にせず、列を追加するだけで簡単に変更できます。次に、順序が本当に重要であると仮定して、望む順序で列を持つビューを作成します。ビューは、必要な順序を反映するように簡単に変更できます。プログラマティックアプリケーションではその順序が重要であるとは想像できないので、重要な部分である手動クエリでは、ビューで十分です。

+3

私は2つのセントを追加することができます、 "配置"テーブルの列や行は重要でなければなりません。スプレッドシートは場所を使用して物を見つけるが、データベースはそうしない。 –

54

あなたが特定のフィールドの後に単一の列を追加したい場合は、MySQLのクエリは次のとおりです。あなたが複数追加する場合

ALTER TABLE users 
    ADD COLUMN count SMALLINT(6) NOT NULL 
    AFTER lastname 

列に「ADD」コマンドを使用する必要があります。


ポイント

ALTER TABLE users 
    ADD COLUMN count SMALLINT(6) NOT NULL, 
    ADD COLUMN log VARCHAR(12) NOT NULL, 
    ADD COLUMN status INT(10) UNSIGNED NOT NULL 
    AFTER lastname 
に注意すること:としてmysqlのクエリは、次の第二の方法では、最後の ADD COLUMN が実際にあなたがテーブルに追加する最初の列でなければなりません。

例えば:あなたは lastname後に順番に countlogstatusを追加したい場合は、構文は実際に次のようになります。

ALTER TABLE users 
    ADD COLUMN log VARCHAR(12) NOT NULL, 
    ADD COLUMN status INT(10) UNSIGNED NOT NULL, 
    ADD COLUMN count SMALLINT(6) NOT NULL 
    AFTER lastname 
+1

複数の列を持つ2番目のバージョンは私のために機能しませんでした。 – divinedragon

+3

2番目のバージョンは、私にとって完璧に機能しました。私はMySql 5.5.25を使用しています。 – Norman

+0

コードの最後のビットは 'count'、' log'、 'status'、' count'、 'status'、' log'の順に列を追加しますか? – Sarfaraaz

1

のALTER TABLE users ADD COLUMN COLUMN NAME DATATYPE(SIZE)EXISTING COLUMN NAME AFTER。

私のためにうまくいけば、これでやることができます。

6

この1つは正しいです:

ALTER TABLE `users` 
    ADD COLUMN `count` SMALLINT(6) NOT NULL AFTER `lastname`, 
    ADD COLUMN `log` VARCHAR(12) NOT NULL AFTER `count`, 
    ADD COLUMN `status` INT(10) UNSIGNED NOT NULL AFTER `log`; 
4

あなたはADD COLUMNを使用してコンマで複数のカラム名を言及することはできません。新しい列を定義するたびにADD COLUMNと記述する必要があります。

+1

私は+1を付けましたが、これは受け入れられた回答のコメントでなければなりません – mjsarfatti

1

これは私のために正常に動作します:

ALTER TABLE 'users' 
ADD COLUMN 'count' SMALLINT(6) NOT NULL AFTER 'lastname', 
ADD COLUMN 'log' VARCHAR(12) NOT NULL AFTER 'count', 
ADD COLUMN 'status' INT(10) UNSIGNED NOT NULL AFTER 'log'; 
関連する問題