我可以插入来自另一个方案的查询表结果吗?

时间:2019-03-04 18:41:18

标签: mysql database database-design mysql-workbench

我有两个计划。每个方案当然都有不同的名称。但是两种方案中的表和每个表的字段都具有相同的名称。

我想从第一个方案的表中查询数据,以将结果插入第二个方案表。

问:有可能吗?

我的小测试给我语法错误,但不清楚到底是什么错误。

第二种方案中的查询与以下简单查询类似:

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;

方案为:test1test2 这些表是:test1.t1test2.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

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中的列数也应该相同。但这不是必需的。在INSERTSELECT中都保留一列会导致将值处理为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 ...