2015-09-18 1 views
1

Я следующий запрос, который я хочу, чтобы выполнитьКак автоинкрементным ID в Batch вставки

INSERT INTO TableB (ID, Age, RollNo) 
SELECT (select (max(id) + 1) from TableB), Age, RollNo 
FROM TableA 
WHERE Age > 20 AND RollNo < 500 

Теперь все новые записи имеют одинаковый идентификатор в TableB

я делаю что-то неправильно ,

P.S. Я не могу изменить свойства столбцов, я не могу установить его на автоинкрементируемого, он должен иметь значение по умолчанию NULL

ответ

0

Объявите 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; 
+0

PS Я не могу изменить свойства столбца, я не могу установить его в AUTO-INCREMENT, он должен иметь значение по умолчанию NULL –

+0

@ john.p.doe, см. Редактирование в ответ, если это помогает. – Rahul

+0

Ты гений, мой друг. Большое спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^