2015-05-22 2 views
2

Привет Я пишу запрос для вставки значений в таблицу. Это дает мне ошибку.более одной строки, возвращаемой подзапросом

Мои Qyery

INSERT INTO res_partner(
         name, 
         company_id, 
         create_date, 
         street, 
         city, 
         display_name, 
         zip, 
         supplier, 
         ref, 
         is_company, 
         customer, 
         street2, 
         employee, 
         write_date, 
         active, 
         write_uid, 
         lang, 
         create_uid, 
         notify_email) 
     VALUES(
       (SELECT shipping_address_name FROM temp_unicom), 
       1, 
       LOCALTIMESTAMP, 
       (SELECT shipping_address_line_1 FROM temp_unicom;), 
       (SELECT shipping_address_city FROM temp_unicom), 
       (SELECT shipping_address_name FROM temp_unicom), 
       (SELECT shipping_address_pincode FROM temp_unicom), 
       FALSE, 
       (Select sale_order_item_code FROM temp_unicom), 
       FALSE, 
       TRUE, 
       (SELECT shipping_address_line_2 FROM temp_unicom), 
       FALSE, 
       LOCALTIMESTAMP, 
       TRUE, 
       1, 
       'en_US', 
       1, 
       'always'); 

Ошибка:

ERROR: more than one row returned by a subquery used as an expression

********** Ошибка **********

ERROR: more than one row returned by a subquery used as an expression SQL state: 21000

Я знаю, что каждый select subquery возвращает несколько строк, но я не знаю, как его исправить. У меня около 15000 строк в моей таблице temp_unicom, и я пытаюсь вставить данные из temp_unicom в res_partner.

+3

Вам необходимо некоторое где положение в ваших вложенных запросах, чтобы они возвращают одно значение. Вы не можете вставить несколько значений в 'insert into'. – artm

+0

Проблема в том, что у меня нет предложения where. Мне нужно скопировать данные из temp_unicom в res_partner. LOCALTIMESTAMP дает текущую временную метку моей системы. –

+0

'insert into res_partner (col1, col2, col3, col4, col5) select cola, colb, 1, 'en_US', colc from temp_unicom' –

ответ

6

Ваш код некорректный для insert ... select. Если вы хотите вставить много строк из таблицы temp_unicom вы должны переписать запрос, как показано ниже

Insert into res_partner 
(name,company_id,create_date,street,city,display_name,zip,supplier,ref,is_company,customer,street2,employee,write_date,active,write_uid,lang,create_uid,notify_email) 
Select shipping_address_name,1, LOCALTIMESTAMP, shipping_address_name, 
shipping_address_line_1,shipping_address_city, 
shipping_address_name,shipping_address_pincode,sale_order_item_code,FALSE, 
shipping_address_line_2,FALSE, LOCALTIMESTAMP, TRUE,1,'en_US',1,'always' 
from temp_unicom 
Смежные вопросы

 Смежные вопросы