Проблемы с синтаксисом запроса MySQL?Попытка ВСТАВИТЬ ВНУТРЕННЕГО СОЕДИНЕНИЯ - PullRequest
1 голос
/ 22 февраля 2012

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

INSERT INTO database VALUES * FROM dbtemp WHERE dbtemp.number NOT IN (SELECT dbtemp.number FROM dbtemp INNER JOIN database ON dbtemp.number = database.number AND dbtemp.price = database.price);

Я успешно выполнил другие запросы к этим базам данных, поэтому я знаю, что это просто проблема с синтаксисом этого оператора.Но по жизни я не вижу, что не так.Любые предложения / советы будут с благодарностью.

Спасибо!

1 Ответ

2 голосов
/ 22 февраля 2012

Должно ли это было INSERT INTO SELECT утверждение? Ваш синтаксис INSERT INTO database VALUES * подозрительный ...

INSERT INTO database
  SELECT * FROM dbtemp 
  WHERE dbtemp.number NOT IN (
    SELECT dbtemp.number FROM dbtemp INNER JOIN database ON dbtemp.number = database.number AND dbtemp.price = database.price
  );

При выполнении INSERT SELECT, как это, рекомендуется использовать явные имена столбцов, а не SELECT *, чтобы убедиться, что они возвращаются в правильном порядке:

INSERT INTO database
  SELECT
    col1,
    col2,
    col3
  FROM dbtemp 
  WHERE dbtemp.number NOT IN (
    SELECT dbtemp.number FROM dbtemp INNER JOIN database ON dbtemp.number = database.number AND dbtemp.price = database.price
  );
...