在MySQL中的特定列之后添加多个列

在MySQL中的特定列之后添加多个列,mysql,ddl,Mysql,Ddl,我需要向一个表中添加多个列,但将列放在名为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语法有错误;检查手册 对应于您的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语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第7行的
lastname
”之后



如何在这样的查询中使用AFTER?

一种可能是不必费心对表中的列重新排序,只需通过添加列对其进行修改。然后,创建一个视图,其中列的顺序是您想要的——假设顺序确实很重要。可以轻松更改视图以反映所需的任何顺序。由于我无法想象顺序对于编程应用程序来说是重要的,因此该视图应该足以满足那些可能很重要的手动查询。

试试这个

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

选中

如果要在特定字段后添加一列,则以下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

注意事项 在第二种方法中,最后一个
添加列
实际上应该是要附加到表中的第一列

例如:如果要按
lastname
之后的确切顺序添加
count
log
status
,则语法实际上是:

ALTER TABLE users
    ADD COLUMN log VARCHAR(12) NOT NULL AFTER lastname,
    ADD COLUMN status INT(10) UNSIGNED NOT NULL AFTER lastname,
    ADD COLUMN count SMALLINT(6) NOT NULL AFTER lastname
    
你可以用这个来做,对我来说很好。

这个是正确的:

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

不能使用
addcolumn
提及多个带逗号的列名。每次定义新列时,您都需要提到添加列。

这对我来说很好:

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的解决方案如下

ALTER TABLE reservations ADD COLUMN isGuest BIT DEFAULT 0
更改表
列表
ADD
count
INT(5),添加
log
VARCHAR(200),在stat之后添加
status
VARCHAR(20)

它将产生良好的效果。

或者:

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

我已经完成了这段代码,以防有人遇到我使用MySQl代码快速添加大量字段的问题。希望这有帮助,如果你太忙,你也可以在任何在线php编译器上运行这段代码

$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>';

        }
    }
$fields=数组(
“上校一号”,
“col_二号”,
“上校三号”
);
$startF='在后面';
$table='table_name';
$output='ALTER TABLE'.$TABLE'.

对于($i=0;$i你说的是哪种方言?在我看来像mysql。但是,
ALTER TABLE
语法在不同方言之间有点不同。可能的重复我认为你在添加的每一列上都需要一个AFTER关键字。无论这意味着你需要所有3个都在lastname之后,还是每个新列都需要一个单独的ALTER TABLE语句,我不能说f或者当然。如果我可以加上我的两分钱,“安置”无论是表列还是行,都应该是无关紧要的。电子表格使用位置来查找内容,而数据库不使用位置。第二个版本对我来说运行得非常好。我使用的是MySql 5.5.25。最后一段代码是否按
计数
日志
状态
计数
状态添加列日志
?注意:如果不添加'AFTER lastname'位,则将最后一列放在alter table列表中的顺序实际上并不适用。因此,当您更改table table add column blah1时,添加blah2列;(注意否'AFTER'子句),列blah1将首先追加,然后是blah2。我给出了+1,但这应该是对已接受答案的一个注释。窃取注释以获得投票。不要这样做,伙计。[作为附加信息]在一个
ALTER TABLE
语句中允许使用多个
ADD
ALTER
DROP
CHANGE
子句,用逗号分隔。这是标准SQL的MySQL扩展,每个ALTER TABLE语句只允许一个子句。@Ayyappan我们可以在SQL server中这样做吗?其他语句都不能为我做了一件事——不过这件事做了。
$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;