我需要在一个表中添加多个列,但在名为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 ?


当前回答

另外:

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语句时将它们按您想要的顺序放置。

其他回答

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

ADD count INT(5), ADD log VARCHAR(200), ADD status VARCHAR(20) AFTER stat

这样会有很好的效果。

如果你想在一个特定的字段后面添加一个列,那么下面的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
    

下面这个是正确的:

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

这对我来说很有效:

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