在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服务器版本,以使用正确的语法 AFTER lastname'在第7行

< p > < br > 如何在这样的查询中使用AFTER ?< / p >
682384 次浏览

一种可能是不需要对表中的列进行重新排序,只需通过添加列来修改它。然后,创建一个视图,其中的列按照您想要的顺序排列——假设这个顺序非常重要。视图可以很容易地更改,以反映您想要的任何顺序。由于我无法想象顺序对编程应用程序很重要,因此视图应该足以满足那些可能很重要的手动查询。

试试这个

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

注意事项

在第二种方法中,最后一个ADD COLUMN 实际上应该是你想附加到表中的第一列。

例如:如果你想在lastname之后以精确的顺序添加countlogstatus,那么语法实际上是:

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
`COLUMN NAME` DATATYPE(SIZE) AFTER `EXISTING COLUMN NAME`;

你可以用这个,对我来说很好。

下面这个是正确的:

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

使用ADD COLUMN时,不能用逗号提到多个列名。每次定义新列时都需要提到ADD COLUMN

这对我来说很有效:

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

修改表listing添加count INT(5),添加log VARCHAR(200),添加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`;

在精简AFTER语句时将它们按您想要的顺序放置。

我已经做了这段代码,以防任何人面临我的问题,快速添加大量的字段使用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>';


}
}

//不包含数组的额外字段

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