web-dev-qa-db-ja.com

MySQLの特定の列の後に複数の列を追加する

テーブルに複数の列を追加する必要がありますが、列の位置は の後lastnameという列です。

私はこれを試しました:

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

私はこのエラーが出ます:

SQL構文にエラーがあります。 7行目でnear ')AFTER lastname'を使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。


このようなクエリでAFTERを使用する方法を教えてください。

303
Koala

これを試して

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`;

構文を確認してください

619
Ayyappan Sekar

特定のフィールドの後に単一の列を追加したい場合は、次のMySQLクエリが機能するはずです。

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

複数の列を追加したい場合は、列ごとに 'ADD'コマンドを使用する必要があります。これがMySQLのクエリです。

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

注意点

2番目の方法では、最後のADD COLUMN column が実際にテーブルに追加する最初の列になります。

例:countlogstatuslastnameの後に正確な順序で追加したい場合、実際の構文は次のようになります。

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
70
user3106476

これは正しいです。

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`;
9
Denys Popov

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

8
Piyush Saxena

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

あなたはこれでそれをすることができます、私のためにうまく働きます。

2
Gaurav Singh

1つの可能性は、テーブル内の列の並べ替えを気にせず、単に列を追加して変更することです。次に、順序が本当に重要であると仮定して、必要な順序で列を持つビューを作成します。あなたが望む任意の順序を反映するようにビューを簡単に変更することができます。順序がプログラム上のアプリケーションにとって重要であるとは想像できないので、ビューは重要であるかもしれない手動のクエリに対して十分であるべきです。

1
Ahmed

デフォルト値0で私のために働いた解決策は次のとおりです

ALTER TABLE reservations ADD COLUMN isGuest BIT DEFAULT 0
0

これは私にとってはうまくいきます:

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';
0
Aiswarya T S