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


当前回答

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

其他回答

对于我来说,默认值为0的解决方案如下

ALTER TABLE reservations ADD COLUMN isGuest BIT DEFAULT 0
ALTER TABLE `users` ADD COLUMN
`COLUMN NAME` DATATYPE(SIZE) AFTER `EXISTING COLUMN NAME`;

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

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

这样会有很好的效果。

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