Как автоматически увеличить идентификатор в пакетной вставке
У меня есть следующий запрос, который я хочу выполнить
INSERT INTO TableB (ID, Age, RollNo)
SELECT (select (max(id) + 1) from TableB), Age, RollNo
FROM TableA
WHERE Age > 20 AND RollNo < 500
Теперь все новые записи имеют одинаковый идентификатор в таблице B
Я делаю что-то неправильно.
PS Я не могу изменить свойства столбца, я не могу установить значение AUTO-INCREMENT, для него должно быть значение по умолчанию NULL
1 ответ
Решение
Объявить ID
колонка в TableB
как AUTO_INCREMENT
который в конечном итоге послужит этой цели
ALTER TABLE TableB MODIFY COLUMN ID INT auto_increment
В этом случае вы можете сгенерировать эти числа, как
SET @id := (SELECT MAX(ID) FROM TableB);
INSERT INTO TableB (ID, Age, RollNo)
SELECT (@id := @id + 1), Age, RollNo
FROM TableA
WHERE Age > 20 AND RollNo < 500;