我有两个计划。每个方案当然都有不同的名称。但是两种方案中的表和每个表的字段都具有相同的名称。
我想从第一个方案的表中查询数据,以将结果插入第二个方案表。
问:有可能吗?我的小测试给我语法错误,但不清楚到底是什么错误。
第二种方案中的查询与以下简单查询类似:
INSERT INTO table1 (column1, column2, column3, ...)
SELECT table1.column1
FROM scheme1.table1
第一行(插入)在scheme2中。第二和第三行来自scheme1。但这是行不通的。
问:如何从两个具有相同表名和表字段名的不同方案进行查询。P.S。我知道这种设计选择并不理想。但是我发现自己处于这种情况。它不是长期生产数据库,而是研究数据。我需要从两个方案中查询。
编辑:
将teinsert插入test2.t1.col1 从test1.t1中选择t1.col1;第一个查询是:
insert into test2.t1.col1
select t1.col1 from test1.t1;
方案为:test1
和test2
这些表是:test1.t1
和test2.t1
列为:test1.t1.col1
test2.t1.col1
查询结果为:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.col1 select t1.col1 from test1.t1' at line 1
答案 0 :(得分:0)
列数必须匹配:
INSERT INTO t2
(a,b,c) -- You intend to provide 3 columns per row
SELECT
x,y,z -- This list must have 3 columns, too.
FROM t1 ...
通常,t2中的列数也应该相同。但这不是必需的。在INSERT
和SELECT
中都保留一列会导致将值处理为NULL
。
使用AUTO_INCREMENT id
,您可以这样做:
INSERT INTO t2
(id,b,c)
SELECT
NULL,y,z -- automatically provide `id`
FROM t1 ...
或者这具有相同的效果:
INSERT INTO t2
(b,c)
SELECT
y,z
FROM t1 ...