2015-04-21 3 views
1

Заказать СтолMySQL Операнд должен содержать 1 столбец (ы) ВСТАВИТЬ

id 
orderlinesid 
productvaritiesid 

OrderLines Таблица

orderlinesid 
productvaritiesid(fk) 

Я пытаюсь сделать вставку в Order таблицу. Мой запрос возвращает следующее исключение "Operand should contain 1 column(s)". Рассматривая вопрос на SO, я вижу, что возвращается только один столбец в подзапросе.

Мой вопрос: как я могу это сделать, пытаясь достичь этого?

INSERT INTO refund (refund.orderlinesid, refund.productvaritiesid) VALUES 
((select orderlines.orderlinesid, orderlines.product_varities_id from orderlines where orderlines.order_id = 54 AND orderlines.product_varities_id = 3)); 
+1

Нет скобкой, нет ЗНАЧЕНИЯ, то есть 'INSERT INTO (х, у, г) не ВЫБРАТЬ х, у, г ОТ ... '. Синтаксис «VALUES» используется для однострочных вставок из входных данных, тогда как «INSERT INTO ... SELECT» используется для копирования строк из другого запроса. – StuartLC

+0

Это работает, но вы можете объяснить, почему этот синтаксис верен? @StuartLC – Haris

+1

@Harry Документы MySQL имеют некоторые объяснения: https://dev.mysql.com/doc/refman/5.1/en/insert-select.html – dan08

ответ

0

Неправильный синтаксис на код, значения относится к конкретному случаю

INSERT INTO refund 
    (refund.orderlinesid, refund.productvaritiesid) 
select orderlines.orderlinesid, orderlines.product_varities_id 
from orderlines 
where orderlines.order_id = 54 AND orderlines.product_varities_id = 3; 
Смежные вопросы