Обновить значения набора результатов в столбце при вставке - PullRequest
0 голосов
/ 18 сентября 2018

Я уверен, что это основной шаг синтаксиса SQL, который я забыл, но я не могу вспомнить, как это сделать.

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

Например, предположим, у меня есть таблица с именем «dogs» со столбцами dogID, dogName, dogBreed, dogUnit.Я знаю, что могу сделать вставку следующим образом:

INSERT INTO dogs (dogID, dogName, dogBreed, dogUnit) VALUES (
'005','Test','M','1550');

И она будет работать.

Но я также мог бы выполнить вставку, используя select:

INSERT INTO dogs (dogID, dogName, dogGender, dogUnit)
SELECT dogID, dogName, dogGender, dogUnit FROM dogs WHERE dogunit = '1550'

И это будет работать, но это определенно будет вставлять дубликаты записей.На самом деле я пытаюсь (используя простой английский в последней строке):

INSERT INTO dogs (dogID, dogName, dogGender, dogUnit)
SELECT dogID, dogName, dogGender, dogUnit FROM dogs WHERE dogunit = '1550'
BUT change dogUnit to '1660' on insert

Возможно ли это, или я неправильно думаю об этом процессе?Спасибо заранее за любую помощь.Моей следующей мыслью было в основном вставить результаты запроса во временную таблицу, обновить единицу измерения # в каждой записи во временной таблице, а затем скопировать недавно обновленный набор результатов обратно в другую таблицу.

1 Ответ

0 голосов
/ 18 сентября 2018

Просто замените значение при выборе:

INSERT INTO dogs (dogID, dogName, dogGender, dogUnit)
SELECT dogID, dogName, dogGender, '1660' FROM dogs WHERE dogunit = '1550'
...