MySql вставить результаты выбора - PullRequest
31 голосов
/ 17 декабря 2010

Я хотел бы знать, могу ли я выполнить такой запрос:

INSERT INTO t2 (a, b) 
VALUES (
 SELECT a, b
 FROM `t1` AS o
 WHERE o.id NOT 
 IN (
  SELECT a
  FROM t2 
  )
)

Идея состоит в том, чтобы заполнить t2 некоторыми данными из t1, но я должен ошибиться в синтаксисе.

Спасибо за помощь

Ответы [ 3 ]

52 голосов
/ 17 декабря 2010

Вы не используете ключевое слово VALUES при вставке из оператора SELECT.

INSERT INTO t2 (a, b) 
 SELECT a, b
 FROM `t1` AS o
 WHERE o.id NOT 
 IN (
  SELECT a
  FROM t2 
  )
5 голосов
/ 17 декабря 2010

удалить values

как

INSERT INTO t2 (a, b) 
SELECT a, b
FROM `t1` AS o
WHERE o.id NOT 
IN 
(
  SELECT a
  FROM t2 
);

ИЛИ более читаемый формат

INSERT INTO t2 (a, b) 
SELECT o.a, o.b
FROM `t1` AS o
LEFT JOIN t2 ON o.id=t2.a
WHERE t2.a IS NULL;
3 голосов
/ 17 декабря 2010

Вам не нужны ЗНАЧЕНИЯ в вашем запросе.

...