根据查询将行插入MySQL表

时间:2010-10-28 18:59:39

标签: sql mysql insert

我有一个查询

SELECT A.a, A.b, A.c
FROM A
LEFT JOIN X ON A.a = X.x
WHERE X.x IS NULL

在表A中找到表X中没有相应条目的条目。如何将此查询的结果插入表X?如果我只有几个条目我会做

INSERT INTO X(xa, xb, xc)
VALUES ('a1', 'b1', 'c1'), ('a2', 'b2', 'c2')

(顺便说一下:列d设置为auto_increment;如果我运行上面的话,这样做是否正确?类似地,列e,f,...,h具有默认值;我相信这些将被设置相应地。)

通过导出,为Excel中的每一行编写单独的SQL片段并执行每个片段,这不难做到;我这主要是为了更好地学习SQL。

(当然我的真实桌子还有更多领域和各种复杂功能,但我认为这种简化就足够了。)

3 个答案:

答案 0 :(得分:2)

INSERT INTO X (xa, xb, xc) 
   SELECT A.a, A.b, A.c
     FROM A
LEFT JOIN X ON A.a = X.x
    WHERE X.x IS NULL

答案 1 :(得分:0)

试试这个:

INSERT INTO X(xa, xb, xc)
SELECT A.a, A.b, A.c
  FROM A
  LEFT JOIN X ON A.a = X.x
 WHERE X.x IS NULL

答案 2 :(得分:0)

您可以使用INSERT ... SELECT语法。但是你必须使用临时表,因为你无法插入你在select语句中加入的表中。

create temporary table Y like X;
INSERT INTO Y (x,y,z) SELECT a,b,c FROM A LEFT JOIN X ON a=x;
INSERT INTO X SELECT * FROM Y;