2013-07-09 39 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';