alter table добавить несколько столбцов после column1

мне нужно добавить несколько столбцов в таблицу, но расположить столбцы после столбца с именем 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 для правильного синтаксиса, чтобы использовать рядом ') после lastname' в строке 7

как я могу использовать AFTER в таком запросе?

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

Регистрация синтаксис


если вы хотите добавить один столбец после определенного поля, то запрос mysql:

ALTER TABLE users
    ADD COLUMN count SMALLINT(6) NOT NULL
    AFTER lastname

если вы хотите добавить несколько столбцов, то вам нужно использовать команду "добавить" каждый раз для столбца. Запрос 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: Если вы хотите добавить count, log, status после lastname, тогда синтаксис будет:

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

это правильно:

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

вы не можете упомянуть несколько имен столбцов с запятыми, используя ADD COLUMN. Вы должны указать ADD COLUMN каждый раз, когда вы определяете новый столбец.


одной из возможностей было бы не беспокоиться о переупорядочении столбцов в таблице и просто изменить его, добавив столбцы. Затем создайте представление со столбцами в нужном порядке-при условии, что порядок действительно важен. Вид можно легко изменить, чтобы отразить любой заказ, который вы хотите. Поскольку я не могу представить, что порядок будет важен для программных приложений, представления должно быть достаточно для тех ручных запросов, где это может быть важно.


ALTER TABLE users ДОБАВИТЬ СТОЛБЕЦ COLUMN NAME ТИП ДАННЫХ (РАЗМЕР) ПОСЛЕ EXISTING COLUMN NAME;

вы можете сделать это с этим, работает нормально для меня.


это отлично работает для меня:

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