#sql #oracle #sql-insert
#sql #Oracle #sql-вставка
Вопрос:
Мне нужно вставить записи в таблицу из выходных данных оператора select в той же таблице, но с некоторыми изменениями, чтобы ограничения не нарушались. Это то, что я пробовал
--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:
Два внутренних оператора select работают нормально, но не полностью.
Возможно ли это сделать только с помощью одного оператора sql?
Комментарии:
1. Удалите
VALUES
и скобку после нее и в конце. Вы также могли бы написать только одинSELECT
—SELECT 'New Value', c2, c3 FROM mytable
.2. Ах, это сработало :). Спасибо.
Ответ №1:
Удалите values
ключевое слово и просто используйте
Insert into MyTable
Select 'New Value', C2, C3
From MyTable
поскольку количество столбцов в списке выбора равно номеру столбца таблицы, то нет необходимости перечислять имена столбцов после имени таблицы в insert into Mytable
части
Комментарии:
1. Приведенный выше пример был упрощенным. У меня есть некоторая логика в подзапросах для фильтрации результата.
2. @Silver. Rainbow что бы вы ни предпочитали, просто удалите
values
ключевое слово.
Ответ №2:
Просто сделайте:
Insert into MyTable (C1, C2, C3)
Select 'New Value', C2, C3
from MyTable;
values
Подзапросы и не нужны.
Комментарии:
1. Спасибо. Но приведенный выше пример был упрощенным. У меня есть некоторая логика в подзапросах для фильтрации результата.
2. @Silver. Радуга … Ну, тогда включите и эту логику.