我需要在一个表中添加多个列,但在名为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行,在姓氏之后
如何在这样的查询中使用AFTER ?
如果你想在一个特定的字段后面添加一个列,那么下面的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列实际上应该是要附加到表中的第一列。
例如:如果你想添加count, log, status在lastname后面的确切顺序,那么语法实际上是:
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
我已经做了这段代码,以防任何人面临我的问题,快速添加大量的字段使用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;
如果你想在一个特定的字段后面添加一个列,那么下面的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列实际上应该是要附加到表中的第一列。
例如:如果你想添加count, log, status在lastname后面的确切顺序,那么语法实际上是:
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