首页 文章

alter table在column1之后添加MULTIPLE列

提问于
浏览
288

我需要向表中添加多个列,但将列放在名为 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行的'lastTER'附近使用正确的语法

如何在这样的查询中使用AFTER?

7 回答

  • 577

    试试这个

    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

    如果要在特定字段后添加单列,则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
    

    Point to note :在第二种方法中,最后一个 ADD COLUMN column 实际上应该是要附加到表的第一列 .

    例如:如果你想在 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

    这个是正确的:

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

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

  • 1

    一种可能性是不打扰重新排序表中的列,只需通过添加列来修改它 . 然后,创建一个视图,其中包含所需顺序的列 - 假设顺序非常重要 . 可以轻松更改视图以反映您想要的任何排序 . 由于我无法想象订单对程序化应用程序很重要,因此该视图应该足以满足那些可能重要的手动查询 .

  • 64

    ALTER TABLE users ADD COLUMN COLUMN NAME DATATYPE(SIZE) EXISTING COLUMN NAME ;

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

  • 7

    这对我来说很好:

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

相关问题