2013-07-09 136 views
229

我需要向表中添加多列,但将列放置在名为lastname的列之后。alter table在列1后面添加多列1

我已经试过这样:

ALTER TABLE `users` ADD COLUMN 
(
    `count` smallint(6) NOT NULL, 
    `log` varchar(12) NOT NULL, 
    `status` int(10) unsigned NOT NULL 
) 
AFTER `lastname`; 

我得到这个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AFTER lastname ' at line 7

我怎么能在这样的查询使用后?

+2

你说的是什么话?看起来像MySQL给我。但是'ALTER TABLE'语法在方言之间稍有不同。 –

+2

对不起,是的mysql。 – Koala

+0

[MySQL Alter Table添加字段之前或之后字段已存在]的可能重复(http://stackoverflow.com/questions/3379454/mysql-alter-table-add-field-before-or-after-a-field -already-present) –

回答

471

试试这个

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

检查syntax

1

一种可能性是不用担心重新排序表中的列,只需通过添加列来修改它。然后,根据需要创建一个包含列的视图 - 假定该顺序非常重要。视图可以很容易地改变,以反映你想要的任何顺序。由于我无法想象这个顺序对程序化应用程序来说很重要,因此这个视图应该足以适用于那些可能很重要的手动查询。

+3

如果我可以添加我的两个美分,“放置”是否为表格列或行,应该是不重要的。电子表格使用位置来查找事物,而数据库则不用。 –

54

如果希望在特定的字段添加单个列,那么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实际上应该要追加到表中的第一列。

e.g:如果你想lastname后添加countlogstatus为了,那么语法实际上是:

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

多列的第二个版本不适合我。 – divinedragon

+3

第二个版本对我来说工作得非常好。我正在使用MySql 5.5.25。 – Norman

+0

代码的最后一位按照'count','log','status'或'count','status','log'的顺序添加列吗? – Sarfaraaz

1

ALTER TABLE users ADD COLUMN COLUMN NAME的数据类型(SIZE)后EXISTING COLUMN NAME;

你可以这样做,对我来说工作很好。

6

这是正确的:

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

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

+1

一起工作我给了+1,但这应该是一个评论接受的答案 – mjsarfatti

1

这对我工作得很好:

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'; 
相关问题