Оператор вставки MySQL (оператор вставки в таблицу (столбцы)) - PullRequest
3 голосов
/ 10 октября 2011

Я пытаюсь вставить значения в выбранные столбцы таблицы, но вставляю только результаты оператора MySQL. Оператор select работает правильно и возвращает результаты.

в сочетании с оператором вставки завершается с

error incorrect syntax near `dedspgoods`.`case number`.

Может кто-нибудь помочь мне с правильным синтаксисом? мой ошибочный синтаксис, как показано ниже:

insert into despgoods_alldetails 
  (`case number`, weight, customer, transporttypename) 
values 
( select despgoods.`case number`
       , despgoods.weight
       , despgoods.customer
       , customers.transporttypename 
  from despgoods 
    inner join customers 
      on despgoods.customer = customers.customer )

Ответы [ 4 ]

19 голосов
/ 10 октября 2011

Если это SELECT, который работает:

select despgoods.`case number`
     , despgoods.weight
     , despgoods.customer
     , customers.transporttypename 
from despgoods 
  inner join customers 
    on despgoods.customer = customers.customer

Затем попробуйте это (обратите внимание, что нет условия VALUES, если вы хотите вставить результирующий набор из SELECT:

insert into despgoods_alldetails 
  (`case number`, weight, customer, transporttypename) 
select despgoods.`case number`
     , despgoods.weight
     , despgoods.customer
     , customers.transporttypename 
from despgoods 
  inner join customers 
    on despgoods.customer = customers.customer
3 голосов
/ 10 октября 2011

Как указано @EdHeal, вам нужно заключить case number в кавычки или обратные кавычки, поскольку в имени столбца есть пробел (тот факт, что CASE является зарезервированным словом, на самом деле является лишь интересной деталью, но это не то, что нарушает запрос в этом случае).

insert into despgoods_alldetails (`case number`,weight,customer,transporttypename) 
values (
    select despgoods.`case number`, despgoods.weight, despgoods.customer, customers.transporttypename
    from despgoods 
    inner join customers on (despgoods.customer=customers.customer)
)
2 голосов
/ 10 октября 2011

case - зарезервированное слово. Необходимо указать «номер дела» в кавычках.

1 голос
/ 10 октября 2011

здесь это идет

 INSERT INTO despgoods_alldetails(
                                  casenumber,
                                  weight,
                                  customer,
                                  transporttyplename)


 VALUES(SELECT desp.casenumber,
        desp.weight,
        despgoods.customer, 
        customers.transporttypename)

 FROM despgoods
 INNER JOIN customers on despgoods.customer = customers.customer

там.это должно работать нормально.Помните, не называйте ваши переменные пробелами, потому что это может быть очень сложно.Я думаю, что у вас была ошибка в номере дела, потому что между ними есть пробел, когда регистр является функцией в MySQL.Дайте мне знать, если вам нужно что-нибудь еще.

...