ORACLE - Как вставить в таблицу из результата другого оператора select, но с изменениями - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужно вставить записи в таблицу из выходных данных оператора выбора в той же таблице, но с некоторыми изменениями, чтобы ограничения не нарушались.Это то, что я пытался

--MyTable as three columns C1,C2,C3

Insert into MyTable
(C1, C2, C3)
values
(
  Select 'New Value', C2, C3
  from
 (
   Select C1,C2,C3 from MyTable
 )
)

Но я получаю эту ошибку

SQL Error: ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:

Два внутренних оператора выбора работают нормально, но не все.

Возможно ли этосделать это только с одним оператором sql?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2019

Удалите ключевое слово values и просто используйте

Insert into MyTable
Select 'New Value', C2, C3
  From MyTable

, поскольку количество столбцов в списке выбора равно номеру столбца таблицы, то нет необходимости перечислять имена столбцов после имени таблицы в insert into Mytable части

1 голос
/ 04 апреля 2019

Просто выполните:

Insert into MyTable (C1, C2, C3)
  Select 'New Value', C2, C3
  from MyTable;

values и подзапросы не нужны.

...