MySql插入一个select的结果

时间:2010-12-17 17:04:51

标签: mysql select insert

我想知道我是否可以运行这样的请求:

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

这个想法是用t1中的一些数据填充t2,但我的语法肯定是错的。

感谢您的帮助

3 个答案:

答案 0 :(得分:52)

VALUES语句插入时,您不使用SELECT关键字。

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

答案 1 :(得分:5)

删除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;

答案 2 :(得分:3)

您的查询中不需要VALUES。