я хочу вставить значения из таблицы1 в таблицу2 со значением приращения - PullRequest
3 голосов
/ 29 апреля 2010

я пробовал что-то подобное, но значение id не меняется, получая значение для первой записи и устанавливая значение для всех остальных ...

insert into table1 (Id,b,c,d) 
 (select (select max(Id)+1 from table1),x,y,z from table2 where... )

1 Ответ

6 голосов
/ 29 апреля 2010

Использовать идентификационный столбец . Тогда вы можете просто сделать это:

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