基于查询将行插入MySQL表
我有一个问题基于查询将行插入MySQL表,sql,mysql,insert,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列设置为自动增量;如果我运行上述操作,这是否正确?同样,e、f、…、h列有默认
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列设置为自动增量;如果我运行上述操作,这是否正确?同样,e、f、…、h列有默认值;我相信这些值将相应设置。)
通过导出、为Excel中的每一行编写单独的SQL代码段并执行每一行,这并不困难;我问这个主要是为了更好地学习SQL
(当然,我的真实表格有更多的字段和各种复杂情况,但我认为这种简化就足够了。)试试这个:
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
您可以使用
INSERT。。。选择
语法。但是,您必须使用临时表,因为无法将其插入到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;
我认为这不起作用,因为select引用了他插入的表。@Cfreak:
X
不是同一个表
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;