Добавление нескольких столбцов ПОСЛЕ определенного столбца в MySQL

Мне нужно добавить несколько столбцов в таблицу, но расположить столбцы после столбца с именем 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


Как я могу использовать ПОСЛЕ в запросе, как этот?

Ответ 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`;

проверьте синтаксис

Ответ 2

Если вы хотите добавить один столбец после определенного поля, тогда должен работать следующий запрос 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 должен фактически быть первым столбцом, который вы хотите добавить в таблицу.

Например: если вы хотите добавить count, log, status в точном порядке после lastname, то синтаксис будет на самом деле:

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

Ответ 3

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

Ответ 4

Это верно:

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

Ответ 5

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

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

Ответ 6

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

Ответ 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';

Ответ 8

Решение, которое работало для меня со значением по умолчанию 0, заключается в следующем

ALTER TABLE reservations ADD COLUMN isGuest BIT DEFAULT 0