Использовать идентификационный столбец . Тогда вы можете просто сделать это:
INSERT INTO table1 (b, c, d)
SELECT x, y, z
FROM table2
WHERE ...
Если вы не хотите использовать столбец с автоинкрементом, вы можете получить тот же эффект, добавив номер строки, а не всегда добавляя 1. Этот синтаксис работает почти во всех основных базах данных SQL (не в MySQL, хотя ):
INSERT INTO table1 (Id, b, c, d)
SELECT
(SELECT MAX(Id) FROM table1) + ROW_NUMBER() OVER (ORDER BY x),
x, y, z
FROM table2
WHERE ...