438

テーブルに複数の列を追加する必要がありますが、列をという列の後に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 構文にエラーがあります。lastname7 行目の ') AFTER ' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。


このようなクエリで AFTER を使用するにはどうすればよいですか?

4

11 に答える 11

852

これを試して

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

構文を確認してください

于 2013-07-09T06:32:39.183 に答える
11

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

于 2015-12-15T22:29:18.240 に答える
4
ALTER TABLE `users` ADD COLUMN
`COLUMN NAME` DATATYPE(SIZE) AFTER `EXISTING COLUMN NAME`;

あなたはこれでそれを行うことができます。私にとってはうまくいきます。

于 2014-09-08T07:22:45.450 に答える
1

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

于 2013-07-09T06:30:16.413 に答える
1

MySQlコードを使用して多くのフィールドをすばやく追加するという問題に誰かが直面した場合に備えて、このコードを作成しました.

$fields = array(

        'col_one' ,
        'col_two' ,
        'col_three'

    );

    $startF = 'after_col';
    $table = 'table_name';

    $output = 'ALTER TABLE ' .$table.'<br>';
    for($i=0 ; $i<count($fields) ; $i++){
        if($i==0){
            $output.= 'ADD COLUMN '.$fields[$i].' VARCHAR(15) AFTER '.$startF.',' . '<br>';

        }else{
            $output.= 'ADD COLUMN '.$fields[$i].' VARCHAR(15) AFTER '.$fields[$i-1].',' . '<br>';

        }
    }

// 配列のない余分なフィールド

    $output.= 'ADD COLUMN col_four VARCHAR(255) AFTER any_col_u_want,  '. '<br>';
    $output.= 'ADD COLUMN col_five VARCHAR(255) AFTER col_four,  '. '<br>';
    $output.= 'ADD COLUMN col_six VARCHAR(255) AFTER col_five'. '<br>';



    echo $output;
于 2021-02-06T18:30:29.680 に答える