2016-08-24 4 views
3

Я использую ORACLE 10g в качестве базы данных.SELECT QUERY в ORACLE INSERT QUERY

Рассмотрим две таблицы:
1.) ABC с колонкой А в качестве первичного ключа и покоя может содержать нулевые значения
2.) XYZ с колонкой W в качестве первичного ключа и покоя может содержать нулевые значения

Также типы данных для коллег такие же
Пример: А = Ш, B = X, C = Y, D = Z
Равенство означает, что такие же типы данных

Следующий запрос работает прекрасно

INSERT INTO ABC(A ,B,C,D) 
VALUES ('klm' , (SELECT X FROM XYX WHERE W ='SOME_VALUE') , 'Dsl' , 'rwz') 

Но следующий запрос не работает .. Если кто-то может мне помочь?

INSERT INTO ABC(A,B,C,D) 
VALUES ((SELECT W, X , Y , Z FROM XYX WHERE W ='SOME_VALUE')) 

Примечание: Значение W не находится в таблице ABC. Нет Нарушение ограничений

Error report: SQL Error: ORA-00947: not enough values 00947. 00000 - "not enough values"

Пожалуйста, объясните?

Вставить в ABC (A, B, C, D) VALUES ('123', (SELECT X, Y, Z от XYZ, где W = 'same_value')) мне нужно решение этой родовой вещи

ответ

6

Удалите конструктор values и используйте запрос Select непосредственно после Insert.

Попробуйте этот путь

INSERT INTO ABC(A,B,C,D) 
SELECT W, X , Y , Z FROM XYX WHERE W ='SOME_VALUE' 

Update

Просто жесткий код значения (123) в Select списке

INSERT INTO ABC(A,B,C,D) 
SELECT 123, X , Y , Z FROM XYX WHERE W ='SOME_VALUE' 
+0

Эй, спасибо за быстрый ответ Каждый раз, когда я надеваю» t сделать то же самое, Вставить в значения ABC (A, B, C, D) ('123', (SELECT X, Y, Z из XYZ, где W = 'same_value')) Мне нужно решение этой общей вещи –

+0

@AshwinSharma - Проверить обновление –

+0

Спасибо, что это сработало ..! :) –