如何 'Union all' 两个 table 和更新第二个 table 的结果
How to 'Union all' two tables and the result to update the second table
我正在尝试 UNION ALL(完全连接两个 table(它们具有相同的列名))两个 table 在一起,但更新第二个 table联合的结果。
下面的代码得到了我想要的结果,但没有用结果
更新table 2
SELECT * 来自 table 2
联合所有
SELECT * 来自 table 1
例如:
table 2
图表名称 |专栏1 |专栏2 | (更多列名称)
姓名 1 |数据1 |数据 1
名字2 |数据2 |数据 2
名字3 |数据3 |数据 3
table 1
图表名称 |专栏1 |专栏2 | (更多列名称)
姓名4 |数据4 |数据4
姓名5 |数据5 |数据5
姓名6 |数据6 |数据6
最终结果(我希望 table 2 看起来像)
图表名称 |数据1 |数据2 | (更多列名称)
姓名 1 |数据1 |数据 1
名字2 |数据2 |数据 2
名字3 |数据3 |数据 3
姓名4 |数据4 |数据4
姓名5 |数据5 |数据5
姓名6 |数据6 |数据6
我想你只是想将 table 1 中的记录插入 table 2:
INSERT INTO table2 ([Diagram name], [Data1], [Data2])
SELECT [Diagram name], [Data1], [Data2])
FROM table1;
请注意,您当前的查询确实会产生您想要的中间结果。如果您想使用该查询 populate/create 一个新的 table,它会起作用。但问题是 table 2 中已经有数据了。
如果你想更新 table 2 并联合所有 table 1 和 table 2,这与从 table 1 插入行不一样吗到 table 2?
Insert into table 2
select [Diagram name], [Data1], [Data2] from table 1
由于 union all
不删除重复项,这将产生相同的结果:
insert into table2 (diagram, col1, col2)
select diagram, col1, col2
from table1 t1
如果您不想重复,可以使用 not exists
:
消除重复
insert into table2 (diagram, col1, col2)
select diagram, col1, col2
from table1 t1
where not exists (
select 1
from table2 t2
where t1.diagram != t2.diagram and t1.col1 != t2.col1 and t1.col2 != t2.col2
)
如果你不想要重复,你可以消除那些不存在的(如果有 100 列,则相同 headers),条件:table1 和 table2 必须具有相同的列数和相同的类型列:
insert into table2
select distinct * from table1
except
select * from table2
我正在尝试 UNION ALL(完全连接两个 table(它们具有相同的列名))两个 table 在一起,但更新第二个 table联合的结果。
下面的代码得到了我想要的结果,但没有用结果
更新table 2SELECT * 来自 table 2
联合所有
SELECT * 来自 table 1
例如:
table 2
图表名称 |专栏1 |专栏2 | (更多列名称)
姓名 1 |数据1 |数据 1
名字2 |数据2 |数据 2
名字3 |数据3 |数据 3
table 1
图表名称 |专栏1 |专栏2 | (更多列名称)
姓名4 |数据4 |数据4
姓名5 |数据5 |数据5
姓名6 |数据6 |数据6
最终结果(我希望 table 2 看起来像)
图表名称 |数据1 |数据2 | (更多列名称)
姓名 1 |数据1 |数据 1
名字2 |数据2 |数据 2
名字3 |数据3 |数据 3
姓名4 |数据4 |数据4
姓名5 |数据5 |数据5
姓名6 |数据6 |数据6
我想你只是想将 table 1 中的记录插入 table 2:
INSERT INTO table2 ([Diagram name], [Data1], [Data2])
SELECT [Diagram name], [Data1], [Data2])
FROM table1;
请注意,您当前的查询确实会产生您想要的中间结果。如果您想使用该查询 populate/create 一个新的 table,它会起作用。但问题是 table 2 中已经有数据了。
如果你想更新 table 2 并联合所有 table 1 和 table 2,这与从 table 1 插入行不一样吗到 table 2?
Insert into table 2
select [Diagram name], [Data1], [Data2] from table 1
由于 union all
不删除重复项,这将产生相同的结果:
insert into table2 (diagram, col1, col2)
select diagram, col1, col2
from table1 t1
如果您不想重复,可以使用 not exists
:
insert into table2 (diagram, col1, col2)
select diagram, col1, col2
from table1 t1
where not exists (
select 1
from table2 t2
where t1.diagram != t2.diagram and t1.col1 != t2.col1 and t1.col2 != t2.col2
)
如果你不想要重复,你可以消除那些不存在的(如果有 100 列,则相同 headers),条件:table1 和 table2 必须具有相同的列数和相同的类型列:
insert into table2
select distinct * from table1
except
select * from table2